构造单例的几种简单方法:

1.

+ (id)shareInstance {    static MyClass * myc = nil;    @synchronized(self){ //关键字,同步,表示同一时间只能有一个线程在访问        if (!myc) {            myc = [[MyClass alloc] init];        }    }    return myc;}

2.dispatch_once_t

 

+ (id)shareInstance {    static MyClass * myc = nil;    static dispatch_once_t once; //锁    dispatch_once(&once, ^{      //最多调用一次        MyClass = [[self alloc] init];    });    return myc;}
// 当第一次使用这个单例时,会调用这个init方法。- (id)init{    self = [super init];    if (self) {        // 通常在这里做一些相关的初始化任务    }    return self;}