#import "CustomObject.h"
static CustomObject *obj = nil;
@implementation CustomObject
+ (id)currentObject{
//如果对象已创建,则返回当前对象,否则则创建一个对象
if (!obj) {
//理论上,单例默认,这个if判断只允许执行一次,因为obj的指针不能有变化
//在多线程中,因为该方法会暂停一秒。在此其间,第一个线程会进入if的判断,并在创建前会暂停一秒。其他线程通过if判断仍然是Nil所以也会进行创建。
sleep(1);
obj = [CustomObject new];
NSLog(@"obj %@",[NSThread currentThread]);
}
return obj;
}
+ (id)shareObject{
//保证在整个进程的生命周期中只执行一次。实际应用中建议使用此方法
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
obj = [CustomObject new];
});
return obj;
}
@end