/单例(只有一个对象,且对像的生命周期和程序生命周期一致)
static DataManager *manager = nil;//定义静态指针变量 存储对象地址.
+(DataManager *)sharedManager{
//保证多线程访问的安全
@synchronized(self) {
if (!manager) {
manager = [[DataManager alloc]init];//单例对象只开辟
[manager readDataFromPlist];
}
}
return manager;
}
//用队列方法.
+(NetWorkHelper *)defaultHelper{
static NetWorkHelper *netHelper = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
netHelper = [[NetWorkHelper alloc]init];
});
return netHelper;
}
//MRC下要重写release, autorelease,retain, 方法,防止创建的单例被释放,不能再次创建.
三个方法内部什么都不要执行. 重写retainCount 方法,返回1.
看附件有定义好的宏文件,直接调用.
兼容arc,和MRC的单例宏文件.
多了条件编译:
#if __has_feature(objc_arc) // 系统判断是否是ARC