Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}<...>
@implementation Singleton
static Singleton *sharedSingleton;
+ (Singleton *)sharedSingleton {
if (sharedSingleton == nil) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedSingleton = [[Singleton alloc] init];
});
}
return sharedSingleton;
}
<...>
// macros for singletone creation
#define DEFINE_SHARED_INSTANCE_USING_BLOCK(block) \
static dispatch_once_t pred = 0; \
__strong static id _sharedObject = nil; \
dispatch_once(&pred, ^{ \
_sharedObject = block(); \
}); \
return _sharedObject; \
#pragma mark - get Instance
+(ILStateManager *)sharedManager
{
DEFINE_SHARED_INSTANCE_USING_BLOCK(^{
return [[ILStateManager alloc] init];
});
}
Записки iOS разработчика: Делимся опытом, часть 1