//三種使用方式均可以 @property (nonatomic, copy, nonnull) NSString *name; @property (nonatomic, copy) NSString * _Nonnull name; @property (nonatomic, copy) NSString * __nonnull name; // 補充(不適用於assign屬性,由於它是專門用來修飾指針的) @property (nonatomic, assign) NSUInteger age;
在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之間,定義的全部對象屬性和方法默認都是nonnull程序員
// 返回值和參數都不能爲空 - (nonnull NSString *)test:(nonnull NSString *)name; // 同上 - (NSString * _Nonnull)test1:(NSString * _Nonnull)name;
// 三種使用方式 // 方式一: @property (nonatomic, copy, nullable) NSString *name; // 方式二: @property (nonatomic, copy) NSString *_Nullable name; // 方式三: @property (nonatomic, copy) NSString *__nullable name;
// 書寫方式: @property (nonatomic, copy, null_resettable) NSString *name;
- (void)setName:(NSString *)name { if (name == nil) { name = @"我叫暢敏"; } _name = name; } - (NSString *)name { if (_name == nil) { _name = @"我叫暢敏"; } return _name; }
@property (nonatomic, strong) NSString *_Null_unspecified name; @property (nonatomic, strong) NSString *__null_unspecified name;