iOS新增关键字 nonnullnullable等相关

Posted gaogaihui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS新增关键字 nonnullnullable等相关相关的知识,希望对你有一定的参考价值。

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新增关键字 nonnullnullable等相关的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11 beta 10改进汇总 Safari新增双指操作等

iOS15.4 来袭:新增“男妈妈”表情及口罩面容解锁AirTags 反跟踪等新功能

iOS15.4来袭:新增“男妈妈”表情及口罩面容解锁AirTags反跟踪等新功能

IOS14 AirPods新增功能!空间音频看片神器!身临其境!

苹果 iOS 14.2 正式发布!新增 117 个 Emoji,还有这 7 个变化值得关注

苹果 iOS 14.2 正式发布!新增 117 个 Emoji,还有这 7 个变化值得关注