Block简单使用

1.用typedef声明一个block

①无参数无返回值

typedef void(^Block)(void);
@property (nonatomic, copy) Block completeBlock ;

②带参数

typedef void(^HKCompleteBlock)(BOOL completed);

2.用@property声明Block

①无参数无返回值

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

②带参数

@property (copy, nonatomic) void (^selectBlock)(NSInteger index);

③带返回值的Block

- (void (^)(int value))add
{
    return ^(int value){
        _reslut += value;
    };
}

④无返回值的Block

    // 声明定义
    // 返回值(^block变量名)(参数)
    // block作用:保存一段代码
    
    void (^block)() = ^(){
        
        NSLog(@"调用block");
    };
    
    block();

⑤参数使用

- (void)calculator:(int (^)(int result))block
{
   _reslut = block(_reslut);
    
    return _reslut;
}

 其他:

    // block定义:三种方式 = ^(参数){};
    // 第一种
    void(^block1)() = ^{
        NSLog(@"调用了block1");
    };
    // 第二种 如果没有参数,参数可以隐藏,如果有参数,定义的时候,必须要写参数,而且必须要有参数变量名
    void(^block2)(int) = ^(int a){
        
    };
    // 第三种 block返回可以省略,不管有没有返回值,都可以省略
    int(^block3)() = ^int{
        return 3;
    };
    // block类型:int(^)(NSString *)
    int(^block4)(NSString *) = ^(NSString *name){
        return 2;
    };

//代理修饰:

@property (nonatomic, weak) id<MyDelegate> delegate;

 

 

 

 

原文地址:https://www.cnblogs.com/StevenHuSir/p/block.html