一般在声明一些成员变量时会看到以下声明方式:html
@property (参数1,参数2) 类型 名字;多线程
这里咱们主要分析在括号中放入的参数,主要有如下三种:app
setter/getter方法(assign/retain/copy)读写属性(readwrite/readonly)atomicity(nonatomic)ide
其中各参数说明以下:性能
assign默认类型,setter方法直接赋值,而不进行retain操做retainsetter方法对参数进行release旧值,再retain新值,以下代码:atom
-(void) setObj:(ClassX*) value { if (obj != value) { [obj release]; obj = [value retain]; } }
copysetter方法进行Copy操做,与retain同样nonatomic禁止多线程,变量保护,提升性能readwrite产生setter\getter方法readonly只产生简单的getter,没有setter。url
官方参考文档以下:spa
http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html线程
本文出自 http://yarin.blog.51cto.com/1130898/416353orm