繁体   English   中英

@合成在Objective-c?

[英]@synthesize in Objective-c?

test.h

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

test.m

@synthesize name;

在这里,为什么我们使用nonatomic保留在属性中,并在.m文件中,为什么我们使用@synthesize

请回答 ,

苹果资料

非原子这里详细描述。

keep表示当值设置为nil以外的其他值时保留该属性。 还有其他选项,例如复制分配 通常,可以复制的对象类型应该使用copy ,例如NSString 分配仅设置指针值。

@synthesize对属性的getter和setter方法进行存根,这是非原子性保留工作所必需的。

另外,请确保如果使用keepcopy ,那么还要在dealloc方法中释放该对象。

- (void)dealloc {
    [name release];
    [super dealloc];
}

nonatomic意味着设置属性不是线程安全的, retain表示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.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM