ios block 的使用回顾

2017-12-31  本文已影响1人  Rui哥
定义
void (^addBlock)(NSInteger) = ^(NSInteger  value){
   NSLog(@"添加的数据时: %ld",value);
};

 调用
addBlock(5);
   
等价于
^(NSInteger  value){
  NSLog(@"添加的数据时: %ld",value);
 }(5);

-2. 返回block 的方法回顾1

方法的封装
-(void(^)(NSInteger))add{
    return ^(NSInteger  value){
    };
}

方法的调用
self.add ; 的结果等价于  ^(NSInteger  value){
                          };

self.add(10); 的结果等价于   ^(NSInteger  value){
                            }(10);

-3. 返回block 的方法回顾2

方法的封装
-(Tool *(^)(NSInteger))add2{
    return ^(NSInteger  value){
        return self;
    };
}

方法的调用
self.add2 ; 的结果等价于  ^(NSInteger  value){  
                                 return self;
                            };

self.add2(10); 的结果等价于   ^(NSInteger  value){
                              在这里实行对value的操作
                              return self;
                            }(10);


方法调用的说明:
当我们执行 self.add2;后其实返回的是一个block ,是一段代码(或者可以理解成一个可以执行的动作), 我们在self.add2 的后面加上一个 (10) 表示我们传入一个参数10 调用这个block , 应为这个block 是有返回值得因此当我们把这个block 执行完成后 返回了self , 因此这个方法
"-(Tool *(^)(NSInteger))add2{
    return ^(NSInteger  value){
        return self;
    };
}" 我们在使用的时候其实要一分为二来看待这个方法,第一阶段执行方法后返回的是block, 当我们给这个block 传参数调用这个block时才 会执行block内的代码返回self;

上一篇 下一篇

猜你喜欢

热点阅读