首页 > 移动平台 > 详细

单例--iOS

时间:2015-09-23 13:31:19      阅读:156      评论:0      收藏:0      [点我收藏+]

GCD单例:

+ (id)sharedInstance {
    static ModulesManager * sharedManager = nil;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        sharedManager = [[self alloc] init];
    });
    
    return sharedManager;
}

 

为了防止外界通过alloc方法申请到另一块内存,只生成单个实例,需要覆盖父类的allocWithZone方法 需要注意线程安全

+(id)allocWithZone:(struct _NSZone *)zone{
    @synchronized(self){
        if (sharedSingleton == nil) {
            sharedSingleton = [super allocWithZone:zone];
        }
    }
    return sharedSingleton;
}
 
+(id)copyWithZone:(struct _NSZone *)zone{
    return sharedSingleton;
}

 

单例--iOS

原文:http://www.cnblogs.com/SimonGao/p/4831930.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!