@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表示在多线程编程中不加原子锁。
网友评论