美文网首页搬砖
iOS属性修饰符的作用

iOS属性修饰符的作用

作者: 风中尘埃飘过 | 来源:发表于2018-07-24 17:59 被阅读227次
    strong 修饰符(与retain的作用基本相同)

    1.strong是一个属性的默认修饰符。
    2.strong修饰的对象在引用计数为0时被销毁。(强引用)

    weak 修饰符

    1.弱引用声明类型。
    2.当weak修饰的对象时,对象的引用计数为0时,对象释放的同时指针地址置为nil。一般用来打破循环引用和修饰delegate。

    assign 修饰符

    1.弱引用声明类型,一般用来修饰基本数据类型。
    2.当assign修饰的对象时,对象的引用计数为0时,对象释放之后,指针地址不会被置为nil。就会出现野指针。所以我们一般不能使用assign修饰对象。
    3.那为什么可以用assign修饰基本数据类型?因为基础数据类型一般分配在栈上,栈的内存会由系统自己自动处理,不会造成野指针。

    copy 修饰符

    1.copy修饰的对象是不可变的。
    2.相当于在调用对象的set方法时新拷贝了一份。

    @property (nonatomic, copy) NSArray *datas;
    
    NSMutableArray *datas = [NSMutableArray arrayWithObject:@"data"];
    self.datas = datas //相当于 self.datas = [datas copy]; 所以说就算你在后面修改datas里面的对象个数,也不会影响self.datas里面的对象个数。这也是为什么我们在使用NSString属性的时候建议使用copy修饰符,这样能防止NSString在使用过程中被修改的问题。
    
    
    atomic 修饰符

    1.能保证线程安全,缺点是性能低。

    nonatomic 修饰符

    1.允许多个线程同时访问,不能保证线程安全。性能高。系统中一般都是使用nonatomic,特殊情况下才会使用atomic。

    readwrite 修饰符

    1.readwrite是默认的修饰符。不给属性添加相关的属性,这个对象都是可以进行读写操作的
    2.readwrite修饰的属性,系统会自动生成set和get方法。

    readonly 修饰符

    1.readonly修饰的属性,系统只会生成get方法,不会生成set方法。

    相关文章

      网友评论

        本文标题:iOS属性修饰符的作用

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