码迷,mamicode.com
首页 > 其他好文 > 详细

利用GCD的dispatch_once创建单例

时间:2014-10-19 16:56:05      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   sp   div   on   log   代码   

1 + (id)sharedWhatever
2 {
3     static dispatch_once_t pred;
4     static Whatever *whatever = nil;
5     dispatch_once(&pred, ^{
6         whatever = [[self alloc] init];
7     });
8     return whatever;
9 }

该方法有很多优势:

    1.线程安全

    2.很好满足静态分析器要求

    3.和自动引用计数(ARC)兼容

    4.仅需要少量代码

该方法的劣势就是它仍然运行创建一个非共享的实例:

whatever = [[Whatever alloc] init];

有些时候你希望有这种行为,但如果正在想要的是仅一个实例被实例化就需要注意这点

利用GCD的dispatch_once创建单例

标签:style   blog   color   ar   sp   div   on   log   代码   

原文地址:http://www.cnblogs.com/zw-h/p/4035021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!