前言
Optional 正如其名,就是個可選擇或者說是可有可無的意思。
Optional
在 Swift 的開發過程之中,我們可以看到「 ! 」、「 ? 」存在於變數之後,像是 var userName: String? 正式意味著 userName 這個 String 有可能是 nil。 有關 Swift optional 的解釋和 nil 對於 Swift 的介紹可以看看這篇,由小草哥所攥寫的文章。 這邊要補充的是,在 Objective-C 裏頭,則是使用 nonnull 和 nullable 來代表著 Swift 裡頭的「 ! 」、「 ? 」。 而在 Objective-C 之中,可以使用 NS_ASSUME_NONNULL_BEGIN 及 NS_ASSUME_NONNULL_END 來作為區域性的宣告 @property 的屬性為 nonnull;若其中有需要宣告成 nullable 的,則再補上即可。
NS_ASSUME_NONNULL_BEGIN
@interface DemoObject : NSObject
@property (nonatomic) NSString *name;
@property (nonatomic, nullable) NSString *address;
@property (nonatomic, readonly) NSString *phoneNumber;
@end
NS_ASSUME_NONNULL_END