一.关键字注意点
在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END这两个之间的代码默认是nonnull
关键字不能用于基本数据类型(int,float),nil只用于对象
二.怎么去研究新特性?
使用新的xcode创建项目,用旧的xcode去打开
2017 Xcode9 iOS11
2016 Xcode8 iOS10
2015 Xcode7 iOS9
2014 Xcode6 iOS8
2013 Xcode5 iOS7
2012 Xcode4 iOS6
三.出了哪些新特性 :可以用于属性,方法返回值和方法参数中
关键字作用:提示作用,告诉开发者能不能空
关键字目的:迎合swift,swift是个强语言,swift必须要指定一个对象是否为空
关键字好处:提高代码规划,减少沟通成本
关键字仅仅是提供警告,并不会报编译错误
1.nullable
nullable使用范围:可以用于属性,方法返回值和方法参数中
nullable作用:可能为空
nullable 语法1
@property (nonatomic, strong, nullable) NSString *name;
nullable 语法2 * 关键字 变量名
@property (nonatomic, strong) NSString * _Nullable name;
2.nonnull
nonnull使用范围:可以用于属性,方法返回值和方法参数中
nonnull作用:不能为空
nonnull 语法1
@property (nonatomic, strong, nullable) NSString *name;
nonnull 语法2 * 关键字 变量名
@property (nonatomic, strong) NSString * _Nonnull name;
3.null_resettable
null_resettable使用范围:可以用于属性,方法返回值和方法参数中
null_resettable作用:set可以传入为空,get方法不能返回nil,必须要处理为空情况,重写get方法
null_resettable 语法
@property (nonatomic, strong, null_resettable) NSString *name;
4._Null_unspecified:不确定是否为空