Вот как я это делаю.
+(MyClass*) mySingleton
{
static MyClass* theSignleton = nil;
@synchronized([MyClass class])
{
if (theSingleton == nil)
{
theSingleton = [[MyClass alloc] init];
}
}
return theSingleton;
}
Это не мешает людям случайно создавать не синглтонные экземпляры, но я думаю, что лучше спроектировать свой класс так, чтобы не синглтоны не нарушали класс, ачем пытаться остановить не одиночек.Это облегчает их обработку в модульных тестах.