在2014,随着苹果公司swift语言的推出,为了能让Object-C与swift和谐的混合开发,而swift以严谨的数据类型而著称,因此,OC不得不为swift而做出改变。接下来,我们简单的说几点iOS 9 Object-C为swift做出的改变。
先看这一张图
正如图中展示的,这一类的关键字有:nullable、nonnulla、null_resettable、_Null_unspecified
解释:
nullable作用:可能为空(swift中有一个可选类型,你可以理解为可能为空)。
nullable使用:
nullable 语法1
@property (nonatomic, strong, nullable) NSString *name;
nullable 语法2 * 关键字 变量名
@property (nonatomic, strong) NSString * _Nullable name;
nonnull作用:不能为空
nonnull 语法1
@property (nonatomic, strong, nullable) NSString *name;
nonnull 语法2 * 关键字 变量名
@property (nonatomic, strong) NSString * _Nonnull name;
null_resettable:必须要处理为空情况,也就是重写get方法,如果为空,返回一个默认的值。
null_resettable作用:get方法不能返回nil,set可以传入为空
null_resettable 语法1
@property (nonatomic, strong, null_resettable) NSString *name;
_Null_unspecified:不确定是否为空,这个使用的较少。
// 再看这一张图,注意结尾处有对应的NS_ASSUME_NONNULL_END
关键字注意点
在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之间默认是nonnull
关键字不能用于基本数据类型(int,float),nil只用于对象