在Objective-c中@synthesize?

时间:2010-11-03 05:59:44

标签: objective-c

test.h

NSString *name;
@property(nonatomic,retain) NSString *name;

test.m

@synthesize name;

这里为什么我们在属性和.m文件中使用 非原子 保留为什么我们使用 @synthesize

请回答,

2 个答案:

答案 0 :(得分:2)

Apple Documentation

非原子 详细介绍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.
}