码迷,mamicode.com
首页 > 移动开发 > 详细

iOS新增关键字 nonnull、nullable等相关

时间:2017-10-02 09:32:46      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:之间   fan   表示   cin   res   12px   编译   microsoft   不为   

1,nonnull和nullable
声明属性是否可以为nil,如果对nonnull属性赋值为nil,则会报警告。
1
2
3
@property (nonatomic, strong, nonnull) NSArray *array1;

@property (nonatomic, strong) NSArray * __nullable array2;
作用主要是开发者之间交互,调用属性时可以知道这个属性是可能为nil的,针对这个状态做些处理。
默认情况下就是nullable状态。
可以用来给方法的参数最要求,比如定一个方法,参数为一个不为空的对象:
 
2,null_resettable
声明属性set方法可以为nil,但是get一定不能为nil,这里有一个貌似冲突的地方,就是可以定义个属性为nil,但是在获取这个属性的时候,这个属性不能为nil,否则会有警告。
 
这里用到的地方例如在UIViewController中的view,意味着开发者可以对控制器的view清空赋值为nil,但是控制器view是懒加载的,每次获取控制器的view时候,都可以再获取到非nil的view。
 
一个Objective-C的新特性:nullability annotations。这一新特性的核心是两个新的类型注释:__nullable__nonnull从字面上我们可以猜到,__nullable表示对象可以是NULL或nil,而__nonnull表示对象不应该为空。当我们不遵循这一规则时,编译器就会给出警告。
不过这只是一个警告,程序还是能编译通过并运行。
事实上,在任何可以使用const关键字的地方都可以使用__nullable和__nonnull,不过这两个关键字仅限于使用在指针类型上。而在方法的声明中,我们还可以使用不带下划线的nullable和nonnull
 
 
 
 

iOS新增关键字 nonnull、nullable等相关

标签:之间   fan   表示   cin   res   12px   编译   microsoft   不为   

原文地址:http://www.cnblogs.com/xiaohuihui-/p/7618351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!