property是一种代码生成机制,可以生成不同类型的getter/setter函数,特别是假设你想要用点(.)操作符号来存取变量的话,你就能必须使用property。
怎样使用?
使用方法如:@property (attribute1,attribute2) float value;
这些attribute包含:
readonly-仅仅读,仅仅能读取而不能设定值(不能用setXXXX的函式)。
readwrite-可读可写(默认)。
assign-在设值时替换新旧变量(默认)。
retain-在设值时retain新的变量,release旧变量。
copy-在设值时copy一份新变量,release旧变量。
nonatomic-默认為atomic。
strong - 在引用计数环境下,默觉得strong,与retain作用同样;
从5.0系统后引入了weak,作用与assign相似,只是当所指向对象引用为0时,自己主动置为nil。
前两个仅仅是简单的设定变量的可读写性。
assign仅仅是简单的替换变量,通常运用在标量类型上,比如:NSInterger和CGRect,
或者(在引用计数环境)为那些你不拥有的对象,比如:delegates。
在垃圾收集环境下retain 和 assign实际上是同样的。
它的产生的setter代码內容类似:
- (void)setValue:(float)newValue {
value = newValue;
}
另一点很要注意的就是,在使用property时一定要在前面带上self(如:self.xxx),假设你不这样做,easy造成内存泄漏。