iOS内存管理(二)属性关键字

原子性操作关键字

  • nonatomic:非原子的, atomiac 原子的 。属性默认是 atomiac , 也就是原子性的。nonatomic执行效率高。

  • atomiac:读写安全,但效率低,不是绝对的安全,比如操作数组,增加或移除,这种情况可以使用互斥锁来保证线程安全

读写

  • readwrite 读写,属性默认是 readwrite , 支持读写。readwirte属性同时具有 set 和 get 方法。

  • readonly 只读 ,属性只具有 get 方法。

#todo readnoly修饰的属性能否使用kvo。添加kvo是否能够生效??? 

内存管理关键字

内存管理主要有copy、strong、weak、assign、retain、unsafe_unretained

  • copy 主要用来修饰NSString,NSArray等有可变类型的不可变对象,根据不同情况,进行深拷贝或者浅拷贝。避免NSMutableString对象赋值给NSString后,可变对象值改变,影响到NSString指向的对象

  • strong 表示强引用,指向并持有对象,引用计数+1

  • weak 表示弱引用,指向但是并不持有该对象,引用计数也不会加1。在 Runtime 中对该属性进行了相关操作,无需处理,可以自动销毁。weak用来修饰对象,多用于避免循环引用的地方。weak 不可以修饰基本数据类型。weak修饰的对象释放后自动职位nil,避免发生迷途指针错误

  • assign ARC用来修饰‘基本数据类型’、‘枚举’、‘结构体’ 等非OC对象类型

  • retain MRC使用,ARC不用了。引用技术+1

  • unsafe_unretained 类似于weak,但是没有runtime的特殊处理。指向的对象被释放后,指针仍然指向原来的地址。当给其指向对象发送消息是,会出现异常

你可能感兴趣的:(iOS内存管理(二)属性关键字)