__block
:支持MRC & ARC呻逆。應(yīng)該是提升了變量的作用域瞧捌,使得在 block 內(nèi)部和外部所訪問(wèn)的是同一個(gè)變量讯赏。
__weak
:支持ARC费就。主要用于在block中避免循環(huán)引用诉瓦。
__strong
:支持ARC。作用類似Retain,可以跟__weak配合睬澡,保證在block范圍內(nèi)變量可用固额。(參考AFNetworking 源碼)
__weak __typeof(self)weakSelf = self; self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ __strong __typeof(weakSelf)strongSelf = weakSelf; if (handler) { handler(); } if (strongSelf) { [strongSelf cancel]; [application endBackgroundTask:strongSelf.backgroundTaskIdentifier]; strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid; } }];
typeof
、__typefo
猴贰、__typeof__
:帶下劃線的兩種是舊的c編譯器支持的擴(kuò)展方式对雪,而不帶下劃線的是現(xiàn)代編譯器支持的方式,目前大部分編譯器都已支持該方式米绕。clang編譯器一樣支持瑟捣。
__unused
:gcc編譯器宏定義__attribute__((unused))
的縮寫,目的是告訴編譯器栅干,如果該參數(shù)或變量沒(méi)有被使用迈套,也不要報(bào)warning。