Block的一些用法


一、定義block
有返回值、有參數:返回類型 ^(blockName)(參數) = ^返回類型(參數列表){///代碼 };
無返回值、有參數:void ^(blockName)(參數) = ^(參數列表){///代碼 };
無返回值、無參數: void (^blockName)() = ^ { /// 代碼實現; };
上面這么多,也記不住:
速記代碼快:inlineBlock ,編譯器會提示:(根據需要刪減就好了);
二、block引用外部變量
在定義block時,如果使用了外部變量,block內部會默認對外部變量做一次copy;
默認情況下,不允許在block內部修改外部變量的值;
在外部變量聲明時,使用__block修飾符,則可以在block內部修改外部變量的值;
三、數組的遍歷&排序;
遍歷:enumerateObjectsUsingBlock:
所有的參數都已經準備到位,可以直接使用
效率比for高,官方推薦使用;
舉例:懶加載
enumerateObjectsUsingBlock遍歷:
[tempArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL*_Nonnull stop) {
NSDictionary dict = (NSDictionary)obj; Heros hero = [HerosherosWithDict:dict];
[ArrMaddObject:hero];
}];
for—IN遍歷:
for (NSDictionary
dict in tempArray) { Heros *heros = [HerosherosWithDict:dict]; [ArrM addObject:heros];
}

  排序:sortedArrayUsingComparator:
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容