block

block 是蘋果官方特別推薦使用的數(shù)據(jù)類型,應(yīng)用場(chǎng)景比較廣泛

動(dòng)畫
[UIView animateWithDuration:.3 animations:^{      
  }];
多線程
dispatch_queue_t mainQueue = dispatch_get_main_queue();    
dispatch_async(mainQueue, ^{     
   });
集合便利
NSArray *arr = @[@"中國(guó)",@"德國(guó)",@"日本",@"美國(guó)"]; 
[arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {       
}];
網(wǎng)絡(luò)請(qǐng)求回調(diào)
 NSDictionary *params; 
 [[NetworkRequest sharedInstance] postRequestWithUrl:@"https://baidu.com" action:@"abc" params:params completionHandler:^(id  _Nullable responseData) {       
} errorHandler:^(NSError * _Nullable error) {       
}];

block 用法

1.用來保存某一段代碼,可以在恰當(dāng)?shù)臅r(shí)機(jī)再取出來調(diào)用.
2.功能有點(diǎn)類似于函數(shù)和方法
3.調(diào)用空的block時(shí) ,報(bào)錯(cuò)exc_bad_access,所有每次調(diào)用block的時(shí)候必須要,先檢查

if(work ?。?nil){
   work();
} 

4.默認(rèn)情況下,block不能修改外面的局部變量,要在變量前添加雙下劃線,才能改變

__block int b = 10;
void (^block)() = ^{
     b = 20;
     NSLog(@“b is %d”,b);
};
block();

5.block其實(shí)也是一種數(shù)據(jù)類型,跟NSString,int之類的類似,定義block變量,給block賦值。

void(^myblock)();//定義一個(gè)變量名為myblock的block

myblock = ^{
        NSLog(@"hahahahshfAAAA");
};//給myblock賦值
 myblock();//調(diào)用這個(gè)block。這里的用法又有點(diǎn)類似函數(shù)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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