zoukankan      html  css  js  c++  java
  • IOS基础学习日志(七)利用dispatch_once创建单例及使用

    自苹果引入了Grand Central Dispatch (GCD)(Mac OS 10.6和iOS4.0)后,创建单例又有了新的方法,那就是使用dispatch_once函数,当然,随着演进的进行。还会有很多其它的更好的方法出现。今天就来简要介绍下怎样利用dispatch_once创建单例。

           在开发中我们会用到NSNotificationCenter、NSFileManager等,获取他们的实例通过[NSNotificationCenter defaultCenter]和[NSFileManager defaultManager]来获取,事实上这就是单例。

    我们先看下函数void dispatch_once( dispatch_once_t *predicate, dispatch_block_t block);当中第一个參数predicate,该參数是检查后面第二个參数所代表的代码块是否被调用的谓词,第二个參数则是在整个应用程序中仅仅会被调用一次的代码块。dispach_once函数中的代码块仅仅会被运行一次,并且还是线程安全的。

           接下来我们来实现自己的单例,这里有一个SchoolManager类,为这个类实现单例

    1. +(SchoolManager *)sharedInstance  
    2. {  
    3.     static SchoolManager *sharedManager;  
    4.       
    5.     static dispatch_once_t onceToken;  
    6.     dispatch_once(&onceToken, ^{  
    7.         sharedManager = [[SchoolManager alloc] init];  
    8.     });  
    9.       
    10.     return sharedManager;  
    11. }  
    到眼下为止,我们就实现了一个单例。一切就搞定了,是不是非常easy!

    使用就依照例如以下方式获取唯一实例就可以:

    1. SchoolManager *schoolManager = [SchoolManager sharedInstance];  
  • 相关阅读:
    Django-分页器
    Django-利用Form组件和ajax实现的注册
    Django之auth用户认证
    django之跨表查询及添加记录
    Django之queryset API
    bootstrip CSS
    bootstrip安装
    Django之环境安装
    前端之jQuery基础篇02-事件
    前端之jQuery基础篇
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7020006.html
Copyright © 2011-2022 走看看