0
我有一个同步的函数,但似乎无法直接更改该块中实例变量的值。在目标C中设置同步块中的实例变量C
+(id)allocWithZone:(NSZone *)zone
{
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [super allocWithZone:zone];
//This is not allowed
something = @"hello";
//This is allowed
self.something = @"hello world!";
return sharedInstance;
}
}
return nil;
}
为什么会出现这种情况?我有一个需要直接访问的变量(我不想综合该变量)。我如何解决这个问题?
你是什么意思,“不允许”?该代码是否不能编译?触发运行时错误?如果崩溃,你能提供崩溃的具体细节吗? – Tim 2011-01-23 08:06:41
@Darren有很多错误,首先是他正在像一个实例方法那样处理一个类方法,并试图在调用`-init`之前设置ivars。 – 2011-01-23 08:12:55