iOS 单例设计模式浅谈--OC

2016-10-13  本文已影响68人  戎码一生为了谁

摘要: 单例的设计思想非常巧妙,是面向对象语言的一大优势,在需要全局资源共享的对象时,经常会用到这种设计模式。

iOS 中单例设计模式的浅析与用法

一、单例的作用

二、单例的写法

1.不考虑线程安全
+(MySingleNoSafeModel *)NoSafeSingle{
static MySingleNoSafeModel *single = nil;
if (!single) {
      single = [[self alloc] init];
     }
    return single;
}
2.考虑线程安全
+(MySingleModel *)customSingle{
    static MySingleModel *single = nil;
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        single = [[self alloc] init];
    });
    return  single;
}
3.代码优化
+(instancetype)myAlloc{    
return [super allocWithZone:nil];
}
+(KingLPayManager *)sharedMamager{
    static KingLPayManager * manager;
    if (manager==nil) {
        manager=[[KingLPayManager myAlloc] init];
    }
    return manager;
}
+(instancetype)alloc{
    NSAssert(0, @"这是一个单例对象,请使用+(KingLPayManager *)sharedMamager方法");
    return nil;
}
+(instancetype)allocWithZone:(struct _NSZone *)zone{
    return [self alloc];
}
-(id)copy{
    NSLog(@"这是一个单例对象,copy将不起任何作用");
    return self;
}
+(instancetype)new{
    return  [self alloc];
}
上一篇 下一篇

猜你喜欢

热点阅读