@proprety 属性的使用

@proprety是iOS中自动生成成员变量的get和set方法。
它有几种属性

读写属性:readonly,readwrite
在自动引用计数下使用的属性:strong,weak,copy
在非自动引用计数下使用的属性:assign,retain,copy
原子特性:nonatomic,atomic

读写特性指的是该对象是可读可写的还是可读的:

  • readonly表示只生成get方法。
  • readwrite表示生成get和set方法。默认使用readwrite

在自动引用计数下使用的特性:

  • weak表示的是弱引用,即一旦没有其他指针持有该对象。该对象立即释放并将指针设置为nil。通过Objective-C运行时源码可知在每一个被week指针指向的对象中都有一个数组存放week指针。当该对象释放后会依次将指针指向置nil,而保证程序不崩溃。
  • strong为强引用,使用该关键字会引用对象。当该指针释放后对象的引用计数会减一。

在非自动引用计数下使用的特性:

  • assign表示不持有对象,它与week不同的地方是assign不会自动在对象释放时将指针置nil,而会形成野指针。
  • retain表示持有对象。
  • copy表示不持有对象并复制该对象的值,创建一个新的对象并持有他。

原子特性:

  • atomic表示在多线程编程中对该对象加原子锁。
  • nonatomic表示在多线程编程中不加原子锁。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容