IOS基础学习日志(七)利用dispatch_once创建单例及使用
2023-09-11 14:14:09 时间
自苹果引入了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类,为这个类实现单例
- +(SchoolManager *)sharedInstance
- {
- static SchoolManager *sharedManager;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedManager = [[SchoolManager alloc] init];
- });
- return sharedManager;
- }
使用就依照例如以下方式获取唯一实例就可以:
- SchoolManager *schoolManager = [SchoolManager sharedInstance];
相关文章
- iOS gzip解压
- iOS app 企业内部发布及HTTPS服务器配置
- SSL Pining Mode 设置iOS SSL 连接安全
- Airtest自动化测试实操案例 | iOS应用篇
- 【数据】开发iOS应用,不得不看的数据和教训
- 《iOS 6核心开发手册(第4版)》——2.3节Interface Builder中的按钮
- Swift语言iOS开发:CALayer十则示例
- SwiftUI 精品项目之完整MOOC幕课iOS项目 含服务端 轮播欢迎页面(教程含源码)
- ios 逆向工程文档汇总
- 《Swift iOS应用开发实战》——2.1为移动平台开发应用
- 《iOS应用软件设计之道》—— 1.5 列出需求提纲
- IOS_ios逆向工程-静态分析
- iOS 手势识别器概述
- iOS开展block说明
- weex-platform里iOS项目打包报错/platforms/ios/../../start does not exist.
- 学习Coding-iOS开源项目日志(三)
- 学习Coding-iOS开源项目日志(二)
- 学习Coding-iOS开源项目日志(一)