前言:nullable 和 nonnull 是为了迎合swift出的新特性,用于修饰属性、或者方法的参数,或者方法的返回值。
- 好处:
1.迎合swift
2.提高我们开发人员开发规范,减少程序员之间不必要的交流
nullable
/*
nullable作用:表示可以为空
nullable书写规范:
*/
// 方式一:
@property (nonatomic, strong, nullable) NSString *name;
// 方式二:
@property (nonatomic, strong) NSString *_Nullable name;
// 方式三:
@property (nonatomic, strong) NSString *__nullable name;
- 怎么用?
1.申明这个属性调用set方法的时候可以给空值 nil 。如下
[self setName:(_Nullable NSString *)];//可以看到这里是可以传空值的(nil)
[self setName:nil];//完整写出来是这样的
nonnull
nonnull作用:不能为空
/*
nonnull: non:非 null:空
nonnull作用:不能为空
书写格式:
*/
// 方法一:
@property (nonatomic, strong, nonnull) NSString *icon;
// 方法二:
@property (nonatomic, strong) NSString * _Nonnull icon;
// 方法三:
@property (nonatomic, strong) NSString * __nonnull icon;
- 既然有为空的申明,也会有不为空的申明,用法和上面一样的
1.申明这个属性调用set方法的时候不能传空(nil)值,如下
[self setName:(_Nonnull NSString *)];//打出来会看到这个类型
[seltf setName:nil];//这样写会警告
//正确写发法
[self setName:@"123"];