nullable作用:表示可以为空
// nullable书写规范:
// 方式一:
@property (nonatomic, strong, nullable) NSString *name;
// 方式二:
@property (nonatomic, strong) NSString *_Nullable name;
// 方式三:
@property (nonatomic, strong) NSString *__nullable name;
//带有_Nullable参数生产的set方法
self setName:(NSString * _Nullable)
nonnull:non:非 null:空
书写方式:
@property (nonatomic, strong, nonnull) NSString *icon;
@property (nonatomic, strong) NSString * _Nonnull icon;
@property (nonatomic, strong) NSString * __nonnull icon;
带有_Nullable参数生产的set方法
self setIcon:(NSString * _Nonnull)
NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END
在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之间定义的所有的属性和方法都是nonnull
null_resettable: get:不能返回为空, set可以为空
// 注意;如果使用null_resettable,必须 重写get方法或者set方法,处理传递的值为空的情况
// 书写方式:
@property (nonatomic, strong, null_resettable) NSString *name;
_Null_unspecified:不确定是否为空
书写方式只有这种
@property (nonatomic, strong) NSString *_Null_unspecified name;
方式二
@property (nonatomic, strong) NSString *__null_unspecified name;
iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值
好处:
1.迎合swift
2.提高我们开发人员开发规范,减少程序员之间交流