Block的三種使用場景

iOS block介紹

block因其古怪的語法結(jié)構(gòu)所以看上去比較蛋疼,比較難記,還好工作中忘記怎么寫了是有技巧的等下會說,block的所用就是幫你保存一份代碼然后再恰當(dāng)?shù)臅r候調(diào)用,返回你所需要的“值”(沒想到詞,就用它吧,對block做了以下總結(jié),做下筆記

如何聲明及實現(xiàn)一個block 看圖

忘記寫法可以試試.png
定義無返回值 無參數(shù)的block
    //  無返回值  無參數(shù)
    void(^block01)() = ^(){
        
        NSLog(@"01-無返回值  無參數(shù)的block");
    };
    
    block01();
定義無返回值 有參數(shù)的block
    //  無返回值  有參數(shù)(int 類型)
    void(^block02)(int) = ^(int age){
      
        NSLog(@"%d",age);
    };
    
    //  傳入一個參數(shù)
    block02(20);
定義有返回值有參數(shù)的block
    //   有返回值  有參數(shù)
    int(^block03)(int) = ^(int num){
     
        NSLog(@"03-有返回值  有參數(shù)的block  num:%d",num);
        
        return 100;
    };
    
   int temp = block03(200);
    
    NSLog(@"03-有返回值  有參數(shù)的block temp:%d",temp);

打印結(jié)果都在這里了

打印結(jié)果.png

好 開始介紹第一種block 把一段block代碼當(dāng)做**對象的屬性值 以Person類為例

以operAtion(操作)為屬性

定義屬性
Paste_Image.png
    //  開發(fā)中第一種使用場景  將block保存到對象中
 
    self.p.operAtion = ^(){
        NSLog(@"02-將block當(dāng)做屬性值保存起來");
    };
    
    
    //  第二種寫法
    void(^block03)() =^(){
    
        NSLog(@"03-將block當(dāng)做屬性值保存起來");
    };

    self.p.operAtion = block03;
在你認為合適的時刻調(diào)用這個屬性 也就是封裝的這段block代碼
Paste_Image.png

第二種block 把block當(dāng)做方法的參數(shù) 也是最常用的寫法

定義一個帶有block的函數(shù)


Paste_Image.png

實現(xiàn)這個函數(shù)

/**
 *  實現(xiàn)方法
 *
 *  @param block  在方法內(nèi)部調(diào)用block
 */
-(void)eat:(void (^)(int))block{

    NSLog(@"此處可封裝N多代碼  返回值可通過block的參數(shù)回調(diào)到外界   此處以 int 為例");
    
    block(5);
}

外界調(diào)用這個方法

    //  開發(fā)中第二種使用場景  將block作為方法的參數(shù)  在方法內(nèi)部調(diào)用這個block
    Person *p = [[Person alloc]init];
    
    [p eat:^(int count){
        NSLog(@"吃了%d個饅頭",count);
    }];
Paste_Image.png

第三種block 把block當(dāng)做方法的返回值 符合鏈式編程思想

定義這個方法
Paste_Image.png
實現(xiàn)這個方法
Paste_Image.png
外界調(diào)用
Paste_Image.png
打印結(jié)果
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容