基本概念
单例模式是最常用的设计模式之一,能够确保某个类型的对象在应用中只存在一个实力
单例模式的优点
- 全局只存在一个对象,便于管理
何时使用
当需要一个对象,又不想在整个应用范围内赋值它(如打印机服务,音乐播放等)可以使用单例模式
坑
- 不可以用结果体等值类型实现。并且单例类不应该遵守NSCopying协议
- 并发问题,多线程中多条线程同时访问同意资源
简单示例
下面创建一个OSX命令行程序,并初始化以下代码。模拟服务器log输出
|
|
|
|
上面代码是一个单例模式的简单实现。但是data数组是可以在多条线程中访问的。增加以下代码测试在异步中会发生什么
|
|
上面代码,会产生如下图所示的crash问题。
上面的问题解决办法依旧很简单 我们只需要给下面方法增加一个同步锁。让所有的异步访问变成同步即可解决
|
|