首先来介绍一下几个关键字: nullable , nonnull , null_resettable _Null_unspecified
这几个关键字通常用来修饰属性或者方法的参数,或者方法的返回值
nullable 的含义表示所修饰的对象可以为空
nonnull 表示非空
null_resttable 表示set 方法可以为空,get方法不能为空
注意:在用这个关键字的时候需要重写set,或者get方法,不然会出现警告
_Null_unspecified 表示不确定所修饰的对象能否为空(用处不大)
对于属性的书写规范
书写规范一:@property (nonatomic,strong,nullable) NSString * name;
书写规范二:@property (nonatomic,strong) NSString *_Nullable name;
书写规范三:@property (nonatomic,strong) NSString *__nullable age;
方法书写规范
方法一: -(nonnull NSString *)test;
方法二:-(NSString *_Nonnull)test1;
方法三:-(NSString *__nonnull)test2;
注意区别:nonnull 在类前面修饰的 _Nonnull 在 *后面 __nonnull 也在 *后面 只不过小写而已。
当然我们也可以不用写直接利用苹果官方文档定义的宏就可以
NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END 成对出现
表示这两个宏中间的东西都不为空
注意:这些关键字或者宏只能够用来修饰对象不能用来修饰基本数据类型
关键字的好处: 用来迎合swift
提高我们开发人员规范,减少程序员之间的交流