test.h
NSString *name;
@property(nonatomic,retain) NSString *name;
test.m
@synthesize name;
这里为什么我们在属性和.m文件中使用 非原子 ,保留为什么我们使用 @synthesize ?
请回答,
答案 0 :(得分:2)
非原子 详细介绍here。
保留 表示当值设置为nil以外的值时,将保留该属性。还有其他选项,例如复制和分配。通常,可以复制的对象类型应使用复制,例如NSString
。 assign 只需设置指针值。
@synthesize 存根该属性的getter和setter方法,并且为了非原子和 retain < / strong>工作。
此外,如果您使用保留或复制,请确保您还<{>}}方法发布对象
dealloc
答案 1 :(得分:1)
nonatomic
表示设置属性不是线程安全的,retain
表示保留新值(并释放旧值),@synthesize
实际上创建的方法是必要的财产。在这种情况下,它的评估结果如下:
- (NSString *)name {
// Method "name", returning content of variable "name".
return name;
}
- (void)setName:(NSString *)newName {
[newName retain];
[name release];
name = newName;
// Also some magic for KVO is added here.
}