美文网首页
IOS_编程思想_Block

IOS_编程思想_Block

作者: _CLAY_ | 来源:发表于2017-10-30 11:09 被阅读9次

开启苹果自带的block代码块:

输入inlineBlock开启苹果自带的block代码块

<#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
        <#statements#>
    };

举个例子

void(^BC_Block)() = ^() {
     NSLog(@"我是一个block");
     };
     BC_Block();

当返回值为id类型的时候,所定义的值也必须将类型写上,否则会报错如下所示!


image.png

正确的写法:

image.png

由此可见,苹果自带的block代码块并不是完整的!

将完整的Block添加到代码块:

<#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^<<#returnType#>>(<#parameters#>) {
        <#statements#>
    };

Xcode 9.0.1 鼠标左键长按1秒,拖拽到右侧的代码块列表中
Xcode 9.0.1 以前的可以直接拖拽到右侧的代码块列表中

Block开发中的使用场景:

准备工作:

先定义一个Person类
Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic,copy) void(^run)(void);

-(void)eat:(void(^)(void))block;

-(Person *(^)(int))write;

@end

Person.m

#import "Person.h"

@implementation Person

-(void)eat:(void (^)(void))block {
    NSLog(@"Person里面调用Block");
    block();
}
-(Person *(^)(int x))write {
//    self是方法调用者!!
    return  ^Person *(int x) {
        NSLog(@"我写到%d页",x);
        return self;
    };
}

@end

ViewController.m

@interface ViewController ()
@property (nonatomic,strong) Person *p;
@end

1.Block作为属性.在合适的时候调用方法

 Person *p = [[Person alloc] init];
    p.run = ^{
        NSLog(@"执行对象中的Block");
    };
    _p = p;
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    _p.run();
}

2.Block作为参数.外界不调用,留给内部调用

[p eat:^{
        NSLog(@"吃东西");
    }];

3.Block作为返回值

void(^block)(void) = p.write;
block(1000);

等同于

p.write(1000);

优点:1.可读性强
2.扩展性 ---- 链式编程

p.write(100).write(200).write(300);

相关文章

  • IOS_编程思想_Block

    开启苹果自带的block代码块: 输入inlineBlock开启苹果自带的block代码块 举个例子 当返回值为i...

  • 一、链式编程思想、响应式编程思想和函数式编程

    1. 链式编程思想 链式编程思想的核心就是方法的返回值必须是Block,Masonry是链式编程思想应用的代表。 ...

  • RAC学习详解

    Block开发基础知识 链式编程思想简介 响应式编程思想简介 函数式编程思想简介 参考资料 iOS 关于MVC和M...

  • IOS_编程思想_链式编程练习

    在之前的两篇文章中已经简单的介绍了IOS的编程思想,那在此处写一个链式编程的联系来加深对链式编程思想的理解!!! ...

  • 利用Runtime和函数响应式编程自己实现OC的KVO

    前面我们在使用Block的时候提到了函数式编程和链式调用的用法,但是实际上Block还有一种编程思想,就是响应式编...

  • ReactiveCocoa基础篇

    ReactiveCocoa简介 使用了函数响应式编程思想 使用了HOOK思想 统一了代理,通知,Block,KVO...

  • IOS_编程思想_RAC简单使用

    本来想写一下RAC的使用方法,但是仔细想了想又没什么需要说的。关键一句话RAC -- 函数响应式编程框架 下面的两...

  • iOS RAC学习

    一、RAC使用基础认知 RAC编程思想:响应式编程+函数式编程 在iOS中,类之间的传值,无非就是block、de...

  • iOS__链式编程思想|函数式编程思想

    1.链式编程思想:方法的返回值是block必须有返回值(本身对象),block参数(需要操作的值) #import...

  • iOS链式、函数式和响应式编程

    原文编程思想-iOS链式、函数式和响应式编程 在了解链式、函数式和响应式编程前,我们需要回顾下Block,它在下面...

网友评论

      本文标题:IOS_编程思想_Block

      本文链接:https://www.haomeiwen.com/subject/plukpxtx.html