Xcode 6.3的发布,给我们带来了OC的一个新特性:nullability
__nullable 和 __nonnull
两个新的类型注解:__nullable和__nonnull,__nullable可以表示一个NULL或者nil值,__nonnull刚好相反。
为了更好的解释这个注释的含义,还是直接上代码吧:

在这里大家可以看到,当我声明一个函数,把参数注解设置为__nonnull以后,我调用函数传入nil就会有警告。
而且注解的添加位置很灵活。额,我又在上面的图片上加了点东西。

大家可以看到在方法定义或声明里,只要类型是一个简单的对象,你就能以不带下划线的方式nullable或nonnull直接写在左括号后面,@property也一样。
通过注解,我们可以很好的把OC和Swift混编结合起来,比如我有个usermodel


然后我通过swift的一个viewcontroller调用usermodel的时候通过__nullable和__nonnull就可以很好的与swift的optional结合起来使用了。


哦,对了还有一种更好的添加注解的方式,你可以通过把Objective-C头文件的某个区域标记为需要审查,在这个区域内,通过NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END来设置区域。
网友评论