_Nullable等的用法和總結(jié)

_Nullable等用法
__nullable 和__nonnull。從字面上我們可知, __nullable 表示對象可以是 NULL 或 nil,而 __nonnull 表示對象不應該為空。當我們不遵循這一規(guī)則時,編譯器就會給出警告。在 Xcode 7 中,為了避免與第三方庫潛在的沖突,蘋果把 __nonnull/__nullable改成 _Nonnull/_Nullable。再加上蘋果同樣支持了沒有下劃線的寫法 nonnull/nullable ,于是就造成現(xiàn)在有三種寫法這樣混亂的局面。

但是這三種寫法本質(zhì)上都是互通的,只是放的位置不同,舉例如下:

方法返回值修飾:

- (nullable NSString*)method ;
- (NSString*  __nullable)method2 ;
- (NSString* _Nullable)method3 ;

聲明屬性的修飾:

@property(nonatomic, copy, nullable) NSString *aString;
@property(nonatomic, copy) NSString* __nullable aString;
@property(nonatomic, copy) NSString* _Nullable aString;

方法參數(shù)修飾:

- (void)methodWithString:(nullable NSString *)aString;
- (void)methodWithString:(NSString  *_Nullable)aString;
- (void)methodWithString:(NSString *__nullable)aString;

而對于雙指針類型對象 、 Block 的返回值 、 Block 的參數(shù) 等,這時候就不能用 nonnull/nullable 修飾,只能用帶下劃線的 __nonnull / __nullable 或者 _Nonnull/_Nullable

- (void)methodWithError:(NSError *_Nullable *_Nullable)error;
- (void)methodWithError:(NSError * __nullable * __null_unspecified)error;
// 以及其他的組合方式
- (void)methodWithBlock:(nullable id __nonnull(^)(id __nullable params))block;
- (void)methodWithBlock:(id __nonnull(^ __nullable)(id __nullable params))block;
- (void)methodWithBlock:(id _Nonnull (^ _Nullable)(id _Nullable params))block;

歸納:
對于屬性、方法返回值、方法參數(shù)的修飾,使用: nonnull/nullable ;
對于 C 函數(shù)的參數(shù)、Block 的參數(shù)、Block 返回值的修飾,使用: _Nonnull/_Nullable

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 技術(shù)無極限,從菜鳥開始,從源碼開始。 由于公司目前項目還是用OC寫的項目,沒有升級swift 所以暫時SDWebI...
    充滿活力的早晨閱讀 12,858評論 0 2
  • 字一疊疊摞著 在看得見的地方 情緒結(jié)成塊 顛簸著修長又寂寞的道路 我們找不出相同的日子 找不出兩朵同時盛放又同時死...
    MelissaJiang閱讀 309評論 0 1
  • 我的姥姥生了兩個女兒——姨母和我的母親。 按照天津人的老話說“姐姐妹妹老親人”。但是據(jù)我看來,母親這姐妹兩個竟是一...
    萬方清儀閱讀 2,089評論 0 1
  • 好多時候我們有好多奇思妙想,好多特別的想法,我們有夢想要去完成,我們有古怪設計,但大多數(shù)的它們都被埋藏在心里,沒有...
    Lj劉小爺閱讀 1,227評論 0 0
  • 前幾天寫了一篇有關(guān)如何語言學習的文章,在簡書小熱門了幾天,因此結(jié)緣認識了一些共同學習的小伙伴,共同學習,共同進步。...
    漫步西班牙idealife閱讀 14,522評論 193 498

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