iOS9新特性關鍵詞

2021-09-05 12:50:47 字數 2032 閱讀 3821

1、作用:表示不能為空

2、用法:

(1)屬性

nonnull 宣告的屬性不能為空(getter方法和setter方法都有)

@property (nonnull, nonatomic, copy) nsstring *name; //寫法一

@property (nonatomic, copy) nsstring *__nonnull name; //寫法二,小寫時為兩個下劃線

@property (nonatomic, copy) nsstring *_nonnull name; //寫法三,大寫時為乙個下劃線

這裡需要注意乙個問題:

person.name = nil;//系統會有警告不能給這個屬性賦nil

nsstring *string = nil;

[person setname:string];//這裡系統不會識別到

每個屬性都要寫關鍵字很麻煩,可以用下面的方法

ns_assume_nonnull_begin

@inte***ce viewcontroller : uiviewcontroller

@property (nonatomic, weak) uilabel *label;

@property (nonatomic, weak) uibutton * __nullable button;

@property (null_resettable, nonatomic, strong) nsarray *friends;

@end

ns_assume_nonnull_end

在ns_assume_nonnull_begin和ns_assume_nonnull_end之間,定義的所有物件屬性和方法預設都是nonnull

ns_assume_nonnull_begin和ns_assume_nonnull_end 要成對出現,不然報錯

一般用於標頭檔案.h 將宣告包含起來針對所有屬性新增 nonnull 修飾

也就是說, 除了nullable和null_resetable需要加修飾, 其他都不需要加修飾

(2)引數

系統提示該方法的引數不能為空

[array addobject:(nonnull nsstring *)];

[array addobject:(nsstring * __nonnull)];

[array addobject:(nsstring * _nonnull)];

1、作用:表示可以為空

2、舉例說明:

(1)屬性

nullable 宣告的屬性可以為空

@property (nullable, nonatomic, copy) nsstring *gender; //寫法一

@property (nonatomic, copy) nsstring * __nullable gender; //寫法二,小寫時為兩個下劃線

@property (nonatomic, strong) nsstring * _nullable gender; //寫法三,大寫時為乙個下劃線

(2)引數

[person setgender:(nsstring * _nullable)];

[person setgender:(nsstring * __nullable)];

[person setgender:(nsstring * _nullable)];

1、作用:setter可為空, getter不可為空

setter方法是nullable(可以賦空值),getter方法是nonnull(取值不能為空)

2、用法:

(1)屬性

用null_resettable來修飾屬性,表示這個屬性的初始化採用了懶載入方式

@property(null_resettable, nonatomic, strong) uiview *view;

ios9新特性之關鍵字

ios9新出的關鍵字用來修飾方法屬性,或者方法的引數,方法的返回值 好處 1 迎合swift 2 提高我們開發人員開發規範,減少程式設計師之間的溝通 ios9新出的關鍵字有以下 nonnull,nullable,null resettable,null unspecified只能修飾物件,不能修飾基...

IOS9新特性慢慢整理

1.首字母不帶下滑線的修飾類名 eg.nullable 2.首字母帶乙個下劃線,則首字母大寫,修飾物件 eg.nullable 3.首字母帶兩個下劃線,則首字母小寫,修飾物件 eg.nullable 4.大多數一般只有第一種 作用 表示可以為空 nullable書寫規範 方式一 property n...

iOS9新特性 ATS使用

一 xcode7 新建的專案,foundation下預設所有http請求都被改為https請求.也就是說,服務需要提供https tls 1.2 的介面 如果服務不改變,則客戶端info.plist的根需加下面的鍵值 nsallowsarbitraryloads 或者嚴謹的 二 xcode7 預設開...