//三种使用方式均可以 @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;