一、Nullability检测的支持
1. 简介
2. nullable
// 写法 1
@property (nonatomic, strong, nullable) NSString * name_1;
// 写法 2
@property (nonatomic, strong) NSString * __nullable name_2;
// 写法 3
@property (nonatomic, strong) NSString * _Nullable name_3;
3. nonnull
// 写法 1
@property (nonatomic, strong, nonnull) NSString * name_1;
// 写法 2
@property (nonatomic, strong) NSString * __nonnull name_2;
// 写法 3
@property (nonatomic, strong) NSString * _Nonnull name_3;
注意 : 在 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 之间,定义的所有对象和方法默认为 nonnull
4. null_resettable
@property (nonatomic, strong, null_resettable) NSString * name_1;
注意 : 如果使用 null_resettable ,则必须重写 getter或setter 方法5. null_unspecified
// 写法 1
@property (nonatomic, strong) NSString * __null_unspecified name_1;
// 写法 2
@property (nonatomic, strong) NSString * _Null_unspecified name_2;
二、类型通配符
三、__kindof
__kindof classname *