【发布时间】:2011-12-08 17:10:10
【问题描述】:
显然在覆盖原子属性访问器时不能使用@synthesize。 Xcode 4 will produce a warning.
现在,是否有另一种方法可以使用延迟初始化原子属性,同时仍然让 Xcode 自动合成 getter 和 setter,而不覆盖其中任何一个?
【问题讨论】:
标签: iphone objective-c ios ipad xcode4
显然在覆盖原子属性访问器时不能使用@synthesize。 Xcode 4 will produce a warning.
现在,是否有另一种方法可以使用延迟初始化原子属性,同时仍然让 Xcode 自动合成 getter 和 setter,而不覆盖其中任何一个?
【问题讨论】:
标签: iphone objective-c ios ipad xcode4
您需要做的是同时编写setter 和getter。您仍然可以@synthesize 获取存储空间。例如:
//.h
@property (strong) id x;
//.m
@synthesize x = _x;
- (id)x
{
@synchronized(self)
{
if (!_x)
{
_x = [[MyX alloc] init];
}
return _x;
}
}
- (void)setX:(id)x
{
@synchronized(self)
{
_x = x;
}
}
您可能需要在不使用 ARC 的情况下进行额外的内存管理,并且可能想要创建不同的锁(而不是 self)或使用不同的同步方法,但它会为您提供要点。
【讨论】: