1、@synthesize 表明由系统创建属性的存取方法。
@dynamic 表明由手动创建属性的存取方法。
2、系统创建存取函数大致代码清单
1)atomic
-(NSString *)firstName
{
[threadLock lock];
NSString *result = [[firstName retain] autorelease];
[threadLock unlock];
}
2)nonatomic
-(NSString *)firstName
{
NSString *result = [[firstName retain] autorelease];
}
在确定只有一个线程访问对象的应用中可以选择使用非原子性存取器函数。
由于不需要原子性存取器函数中所需的线程锁,使用非原子性存取器函数可以略微提高性能。
3)assign
-(void)setFirstName:(NSString *)inValue
{
firstName = inValue;
}
assign通常用于标量属性、委托(delegate)以及不合适保留的其他类型变量。
4)retain
-(void)setFirstName:(NSString *)inValue
{
[firstName autorelease];
firstName = [inValue retain];
}
5)copy
-(void)setFirstName:(NSString *)inValue
{
[firstName autorelease];
firstName = [inValue copy];
}
声明为copy的属性自动生成的存取器函数应该复制对象到成员变量
3、属性名与数据成员名不一致
@property (nonatomic, retain, getter=getFirstName) NSString *firstName;