Привет, у меня была реализация предыдущих версий iOS для singleton следующим образом:
.h файл
@interface CartSingleton : NSObject
{
}
+(CartSingleton *) getSingleton;
.m file
@implementation CartSingleton
static CartSingleton *sharedSingleton = nil;
+(CartSingleton *) getSingleton
{
if (sharedSingleton !=nil)
{
NSLog(@"Cart has already been created.....");
return sharedSingleton;
}
@synchronized(self)
{
if (sharedSingleton == nil)
{
sharedSingleton = [[self alloc]init];
NSLog(@"Created a new Cart");
}
}
return sharedSingleton;
}
//==============================================================================
+(id)alloc
{
@synchronized([CartSingleton class])
{
NSLog(@"inside alloc");
NSAssert(sharedSingleton == nil, @"Attempted to allocate a second instance of a singleton.");
sharedSingleton = [super alloc];
return sharedSingleton;
}
return nil;
}
//==============================================================================
-(id)init
{
self = [super init];
}
Однако в Интернете я вижу, что люди реализовали шаблон дизайна Singleton с помощью этого кода:
+ (id)sharedInstance
{
static dispatch_once_t pred = 0;
__strong static id _sharedObject = nil;
dispatch_once(&pred, ^{
_sharedObject = [[self alloc] init]; // or some other init method
});
return _sharedObject;
}
Может ли кто-нибудь, кто имеет опыт, направить меня. Я новичок и полностью запутался между старой реализацией iOS Синглтона и новой и которая является правильной?
Спасибо большое