使用多线程创建单例对象

#import "ZKZApplication.h"

@implementation ZKZApplication

+(instancetype)allocWithZone:(struct _NSZone *)zone
{
    static ZKZApplication *application;
    // dispatch_once是线程安全的,onceToken默认为0
    static dispatch_once_t onceToken;
    // dispatch_once宏可以保证块代码中的指令只被执行一次
    dispatch_once(&onceToken, ^{
        application=[self allocWithZone:zone];
    });
    return application;
}



+(instancetype)shareApplication
{
    return [[self alloc]init];
}
@end

 

posted @ 2016-03-07 16:03  张凯泽  阅读(224)  评论(0编辑  收藏  举报