Ответ Джошуа верен, но требует, чтобы у вас был объект для синхронизации.Выполнение этого для одиночного прыжка может привести к всевозможным странным условиям гонки, если вы не будете осторожны.Стандартный шаблон для синглтона - инициализировать его в +initialize
, используя dispatch_once
, что правильно:
static MyObject *singleton = nil;
+ (void)initialize {
static dispatch_once_t pred;
dispatch_once(&pred, ^{ singleton = [[MyObject alloc] init]; } );
}
- (MyObject&)getSharedObject
{
return singleton;
}