美文网首页内存管理iOS DeveloperiOS 开发
ARC\\MRC下property关键字的用法

ARC\\MRC下property关键字的用法

作者: 无边小猪 | 来源:发表于2016-08-31 09:38 被阅读0次

       使用属性关键字前,需要先理解属性关键字的作用。其实《简单来说...》就是指导底层如何生成set、get方法的,如果不自己定义set、get方法,系统将会自动为你生成,但如何生成依据的就是这些属性关键字,不同的属性关键字的组合将决定set、get方法的具体实现,实现不同,功能自然也就不同了...

    ----------------------------------------------------------------------------------------------------------------------------------------

    ARC:

    1、assign:基本数据类型、枚举、结构体等非OC对象类型。

    2、strong/retain:使用必须满足两个条件,一是必须是OC对象类型,二是需要被强引用不能'随便'释放。

    3、weak:

    1)别人创建别人拥有,你只是借用一下而已,随时可能会不见,但不见的时候你可以发现。

    2)使用时必须满足两个条件,一是必须是OC对象类型,二是自己不直接拥有的对象。比如delegate,parentviewcontroller等,以防止循环引用。

    3)weak有一个大招,就是当所指对象被释放的时候会自动置为nil。实现的原理《简单来说...》就是每一个strong维护一个weaktable,当把一个strong对象赋值给weak对象时,weaktable中就记录该weak对象,当strong释放时就把weaktable中所有的对象取出来挨个置为nil。

    4、copy:用于block。用于NSString、NSDictionary、NSArray等有Mutable类型的类,此处可以理解为(copy=不可变)。经过测试后发现当把NSString对象赋给copy类型的NSString时,地址未发生改变相当于浅拷贝和strong效果一样,但把NSMutableString赋给copy类型的NSString时地址发生改变,此处相当于深拷贝。

    5、readonly/readwrite:只读/可读写.

    6、atomic/nonatomic:原子操作/非原子,《简单来说...》就是是否线程安全,但通过此方法来保证线程安全开销是很大滴,如果条件允许还是在适合的地方加锁靠谱。

    7、getter/setter:以上都无所谓了,自己写set、get方法。

    ----------------------------------------------------------------------------------------------------------------------------------------

    MRC:

    1、assign:基本数据类型、枚举、结构体等非OC对象类型。也可用于delegate\\parentviewcontroller等不直接拥有的对象,作为MRC下weak的替代品。

    2、retain:使用必须满足两个条件,一是必须是OC对象类型,二是需要被强引用不能'随便'释放。

    3、unsafe_unretained:

    1)别人创建别人拥有,你只是借用一下而已,随时可能会不见,并且不见的时候连个招呼都不打。与ARC中weak的区别就是不会自动置为nil。

    2)使用时必须满足两个条件,一是必须是OC对象类型,二是自己不直接拥有的对象。

    3)与assign的唯一区别就是不能用于基本数据类型。

    4、copy:用于block。用于NSString、NSDictionary、NSArray等有Mutable类型的类,此处可以理解为(copy=不可变)。经过测试后发现当把NSString对象赋给copy类型的NSString时,地址未发生改变相当于浅拷贝和strong效果一样,但把NSMutableString赋给copy类型的NSString时地址发生改变,此处便想当于深拷贝了。

    5、readonly/readwrite:只读/可读写.

    6、atomic/nonatomic:原子操作/非原子,《简单来说...》就是是否多线程安全,但通过此方法来保证多线程安全开销是很大滴,如果条件允许还是在适合的地方加锁靠谱。

    7、getter/setter:以上都无所谓了,自己写set、get方法。

    相关文章

      网友评论

        本文标题:ARC\\MRC下property关键字的用法

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