美文网首页
变量限定符和属性限定符

变量限定符和属性限定符

作者: 小五92 | 来源:发表于2018-10-31 19:16 被阅读34次

    目录

    • 变量限定符
    • 属性限定符

    变量限定符

    ARC 为变量提供了四种生命周期的限定符:
    1、_strong: 默认限定符号,无需显示引入。只要有强引用指向,对象就会长时间驻留在内存中。理解为retain调用的ARC版本。
    2、_weak:当没有强引用指向对象时,弱引用会被置为nil。
    3、_unsafe_unretained : 与_weak类似,但当没有强引用指向对象时,不会被置为nil;
    4、_autoreleasing:用于由引用使用id *传递的消息参数。它将预示在传递参数的方法中调用autorelease方法。

     //创建对象后引用计数为1,并且对象在c1引用期间不会被回收
     Cat * _strong c1 = [[Cat alloc] init];
    
     //创建对象后引用计数为0,对象会被立即释放,且c2被置为nil
     Cat *_weak c2 = [[Cat alloc] init];
    
    //创建对象后引用计数为1,对象会被立即释放,且c3不会被置为nil
     Cat *_unsafe_unretained c3 = [[Cat alloc] init];
    
    //创建对象后引用计数为1,当方法返回时,对象会被立即释放
     Cat *_autoreleasing c4 = [[Cat alloc] init];
    

    属性限定符

    属性共有六种关系限定符:
    1、strong: 默认符,指定_strong关系,修饰引用类型。
    2、weak:表示_weak关系。
    3、assign : 表示_unsafe_unretained关系,修饰值类型。
    4、unsafe_unretained : 表示_unsafe_unretained 关系
    5、retain : _strong 关系。
    6、copy :也表示_strong 关系,该修饰符表示属性的setter方法中会copy一份传。

    相关文章

      网友评论

          本文标题:变量限定符和属性限定符

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