单例ios

/单例(只有一个对象,且对像的生命周期和程序生命周期一致)

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

原文地址:https://www.cnblogs.com/wukun168/p/6010826.html