iOS简单学之10-单例

简单说来,单例就是使得类中的一个对象成为系统中的唯一实例。

iOS 4.0 及以后, 我们一般用这种方法来创建单例。

+ (instancetype)sharedInstance{
    //必须静态或全局
    static YFSessionManager *sharedInstance; 
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{

        sharedInstance = [[YFSessionManager alloc] init];
        sharedInstance.recodeSessions = [NSMutableArray new];
    });
    
    return sharedInstance;
}

查看函数dispatch_once的原型

 void dispatch_once(
    dispatch_once_t *predicate,
    dispatch_block_t block);

第一个参数predicate: 检查后面第二个参数所代表的代码块是否被调用的谓词,
第二个参数则是在整个应用程序中只会被调用一次的代码块。
dispach_once函数中的代码块只会被执行一次,而且还是线程安全的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,325评论 4 34
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,281评论 30 472
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 2,055评论 0 7
  • GCD 深入理解:第一部分 什么是 GCD GCD 是 libdispatch 的市场名称,而 libdispat...
    willphonez阅读 671评论 0 2
  • 虽然 GCD 已经出现过一段时间了,但不是每个人都明了其主要内容。这是可以理解的;并发一直很棘手,而 GCD 是基...
    随风飘荡的小逗逼阅读 1,420评论 0 2