美文网首页
iOS 基础篇 - 《nonnull与nullable,null

iOS 基础篇 - 《nonnull与nullable,null

作者: baiwulong | 来源:发表于2017-12-19 12:16 被阅读18次

    1、nonnull和nullable

    声明属性是否可以为nil,如果对nonnull属性赋值为nil,则会报警告。

    @property (nonatomic, strong, nonnull) NSArray *array1;
    @property (nonatomic, strong) NSArray * __nullable array2;

    作用主要是开发者之间交互,调用属性时可以知道这个属性是可能为nil的,针对这个状态做些处理。
    默认情况下就是nullable状态。
    可以用来给方法的参数最要求,比如定一个方法,参数为一个不为空的对象:

    -(void)doSomethingWithValue:(NSArray*__nonnull)array{}
    如果调用的时候传入nil,则会报警告。
    
    

    2、null_resettable

    声明属性set方法可以为nil,但是get一定不能为nil,就是可以定义个属性为nil,但是在获取这个属性的时候,这个属性不能为nil,否则会有警告。
    @property(nonatomic,strong,null_resettable)NSArray*array1; //空值,就需要重新set方法

    在.m文件中,@implementation

    [self setArray1:nil];//此行代码无警告
    但是@implementation中会报警告,要求重写set方法:
     
    -(void)setArray1:(NSArray*)array1{
        if(!array1)return;//如果赋值为nil直接return
        _array1=array1;
    }
    

    这里用到的地方例如在UIViewController中的view,意味着开发者可以对控制器的view清空赋值为nil,但是控制器view是懒加载的,每次获取控制器的view时候,都可以再获取到非nil的view。

    相关文章

      网友评论

          本文标题:iOS 基础篇 - 《nonnull与nullable,null

          本文链接:https://www.haomeiwen.com/subject/lhubwxtx.html