我刚刚对公共库中使用的代码进行了分析,XCode 指出了以 [[[self alloc] 开头的行存在问题:
static MyClass *_sharedInstance = nil;
+ (MyClass*)sharedInstance
{
if (_sharedInstance != nil) {
return _sharedInstance;
}
@synchronized(self) {
if (_sharedInstance == nil) {
[[[self alloc] init] autorelease];
}
}
return _sharedInstance;
}
当我看到这一行时,我不知道 _sharedInstance 怎么可能被分配。谁能向我解释为什么这段代码有效?我原以为你需要写:
_sharedInstance = [[[self alloc] init] autorelease];