1:Block 在OC 中使用一般用來傳值,當(dāng)然它還有一些其他的用處堵泽。本人不善于寫博客赴穗,簡單貼些block 的使用方法和場(chǎng)景:
1.1 作為一個(gè)當(dāng)前的變量
returnType(^name)(arguments) = ^returnType(arguments){....};
當(dāng)”{}“代碼塊中需要修改上文中的變量值,需在定義的變量前 + __block;
1.2 作為一個(gè)類的變量:可以作為一個(gè)回調(diào)赋咽,不管是可以是任意事件的回調(diào)眯漩;
在定義block的屬性時(shí)芹扭,一般都會(huì)弄個(gè)重命名的Block方式:在OC中 直接敲typedef會(huì)有默認(rèn)選項(xiàng):->typedef returnType(^name)(arguments);
returnType:返回值;name:重命名的Block代表的代碼塊格式名赦抖;arguments:參數(shù)名稱舱卡;
這樣就定義了一個(gè)block的屬性;
1.3 作為一個(gè)函數(shù)的參數(shù):在使用的使用可以使用Block的參數(shù) 傳值摹芙;以下分別是定義灼狰,實(shí)現(xiàn),使用的使用的代碼浮禾;具體業(yè)務(wù)邏輯看需求交胚;
-(void)someMethodThatTakeABlock:(returnType (^)(parameterTypes))blockName;(returnType:返回值,下面)
-(void)someMethodThatTakeABlock:(void (^)(NSString *))blockName
{
!blockName ?: blockName(@"name");
}
[[[TJBlockTest alloc] init] someMethodThatTakeABlock:^(NSString *name) {
}];
總結(jié):Block的使用比較靈活盈电;使用次數(shù)多了蝴簇,感覺蠻好用的!不像通知的跨界面?zhèn)髦荡抑悖膊幌翊淼囊?guī)范熬词;