Добавление к другим ответам ... отправленный код неверен. Это должно быть больше так:
@implementation SpriteManager
+ (NSMutableArray*) allMySprites {
@synchronized(self) {
if (allMySprites == nil) {
allMySprites = [[NSMutableArray alloc] init];
}
}
return allMySprites;
}
@end
Нет смысла @synchronize на нуле. Использование self в методе класса относится к классу, а не к экземпляру. Также «возвращать ноль» в исходном коде бессмысленно.
Лучший подход, при котором можно полностью избежать @synchronized, - это использовать метод инициализации класса:
@implementation SomeClass
+ (void) initialize
{
allMySprites = [[NSMutableArray alloc] init];
}
@end
Методы инициализации гарантированно будут вызваны перед использованием класса.