iOS 创建单例的安全方法。
2014-07-02 17:30
169 查看
类似下面这样的单例实现其实是线程不安全的,会被调用多次而出现创建了多个实例的不希望发生的事情。
我们需要这样子,
即使用了GCD来保证只创建一个单例。
如何让第一种情况出现多个实例的方法可参考 GCD深入理解 https://github.com/nixzhu/dev-blog/blob/master/2014-04-19-grand-central-dispatch-in-depth-part-1.md
+ (instancetype)sharedManager { static PhotoManager *sharedPhotoManager = nil; if (!sharedPhotoManager) { sharedPhotoManager = [[PhotoManager alloc] init]; sharedPhotoManager->_photosArray = [NSMutableArray array]; } return sharedPhotoManager; }
我们需要这样子,
+ (instancetype)sharedManager { static PhotoManager *sharedPhotoManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedPhotoManager = [[PhotoManager alloc] init]; sharedPhotoManager->_photosArray = [NSMutableArray array]; }); return sharedPhotoManager; }
即使用了GCD来保证只创建一个单例。
如何让第一种情况出现多个实例的方法可参考 GCD深入理解 https://github.com/nixzhu/dev-blog/blob/master/2014-04-19-grand-central-dispatch-in-depth-part-1.md
相关文章推荐
- 做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题的解决方法
- [ios] xcode 4.2 创建 adhoc 发布应用测试方法
- iOS--创建圆角图片的又一方法
- iOS Dev (19) 在Xcode中创建iOS动态库的方法
- iOS视图创建初始化的一些工厂方法
- 使用ALT创建activex控件时标记安全方法
- netbean项目创建:Java 7u51安全權限變化,運行derby server 1527d端口被拒,解决方法
- iOS---各种控件的创建方法和部分调用方法
- iOS 创建单例的两种方法
- iOS 创建单例的两种方法
- IOS开发笔记:xcode4.2下xib的创建和UI连接的实现方法
- ios 下创建、删除文件夹的方法
- ios开发创建单例的两种方法
- iOS应用程序安全(7)-不用证书安装应用到设备的方法
- ios开发者创建app应用开发授权文件 实战方法
- IOS中使用CATransition创建动画方法
- ios 下创建,删除文件夹的方法
- ios开发 类方法创建对象,对象须再retain一次
- iOS中使用@方法快速创建对象
- owb之使用OWB安全UI使目标方案称为OWB用户和repository assistant创建一个新用户两种方法作用都是一样的