я не понимаю, использование NSAssert в +alloc
, а когда +alloc
вызывается из +sharedGameManager
, статическая _sharedGameManager
переменная nil
(так NSAssert
должен остановить выполнение в первый раз [self alloc] init]
называется ...)NSAssert in Singleton: почему этот код действителен?
+(GameManager*)sharedGameManager {
@synchronized([GameManager class])
{
if(!_sharedGameManager)
[[self alloc] init];
return _sharedGameManager;
}
return nil;
}
+(id)alloc
{
@synchronized ([GameManager class])
{
NSAssert(_sharedGameManager == nil,
@"Attempted to allocated a second instance of the Game Manager singleton");
_sharedGameManager = [super alloc];
return _sharedGameManager;
}
return nil;
}
Спасибо за ваш ответ
О, да, правда, я не понимаю, почему я был уверен, что это было наоборот :) спасибо за ответ! – Paul