iOS 属性关键字

属性关键字
1.读写权限:readonly,readwrite(默认)
2.原子性: atomic(默认),nonatomic。atomic读写线程安全,但效率低,而且不是绝对的安全,比如如果修饰的是数组,那么对数组的读写是安全的,但如果是操作数组进行添加移除其中对象的还,就不保证安全了。
3.引用计数:
retain/strong
assign:修饰基本数据类型,修饰对象类型时,不改变其引用计数,会产生悬垂指针,修饰的对象在被释放后,assign指针仍然指向原对象内存地址,如果使用assign指针继续访问原对象的话,就可能会导致内存泄漏或程序异常
weak:不改变被修饰对象的引用计数,所指对象在被释放后,weak指针会自动置为nil
copy:分为深拷贝和浅拷贝
浅拷贝:对内存地址的复制,让目标对象指针和原对象指向同一片内存空间会增加引用计数
深拷贝:对对象内容的复制,开辟新的内存空间
可变对象的copy和mutableCopy都是深拷贝
不可变对象的copy是浅拷贝,mutableCopy是深拷贝
copy方法返回的都是不可变对象

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 属性关键字可以分为三种类型: 1.读写权限的类型: readonly ,readwrite 2.原子类 :...
    賣女孩的小火柴阅读 3,101评论 0 0
  • 以前在没有ARC(automatic reference counting)的时候我们使用assign与retai...
    Queen_BJ阅读 2,994评论 0 1
  • 原子性 原子性就nonatomic和atomic两个关键字 atomic与nonatomic atomic是默认的...
    萨缪阅读 2,910评论 0 2
  • @property相当于声明了setter和getter方法 对应runtime底层的objc_property_...
    火柴盒环游记阅读 3,523评论 0 0
  • strong表示指向并拥有该对象。其修饰的对象引用计数会增加1。该对象只要引用计数不为0则不会被销毁。当然强行将其...
    ChancePro阅读 937评论 0 0