iOS中类单例方法的一种实现
2015-11-13 16:05
274 查看
在Cocos2D编程中,很多情况我们需要类只生成一个实例,这称之为该类的单例类.
一般我们在类中这样实现单例方法:
注意静态变量sharedInstance也可以放到类外部去.
但是如果是多线程环境中,上述方法并不能一定保证生成唯一实例,你还必须添加同步代码.
一不小心,你写的同步代码有可能就是错的.如果是简单的Cocos2D单线程程序很可能发现不了,如果放到复杂的多线程App中运行可能就会出现莫名其妙的错误.
殊不知Foundation平台中已经提供了简单的解决办法,我们可以这样写:
一般我们在类中这样实现单例方法:
+(instancetype)sharedInstance{ static Foo *sharedInstance; if(!sharedInstance){ sharedInstance = [Foo new]; } return sharedInstance; }
注意静态变量sharedInstance也可以放到类外部去.
但是如果是多线程环境中,上述方法并不能一定保证生成唯一实例,你还必须添加同步代码.
一不小心,你写的同步代码有可能就是错的.如果是简单的Cocos2D单线程程序很可能发现不了,如果放到复杂的多线程App中运行可能就会出现莫名其妙的错误.
殊不知Foundation平台中已经提供了简单的解决办法,我们可以这样写:
+(instancetype)sharedInstance{ static dispatch_once_t once; static Foo *sharedInstance; dispatch_once(&once,^{ sharedInstance = [self new]; }); return sharedInstance; }
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 设计模式之创建型模式 - 特别的变量问题
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#单例模式(Singleton Pattern)实例教程
- php设计模式之单例、多例设计模式的应用分析
- javascript 单例/单体模式(Singleton)
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- C++单例模式应用实例
- Android、iOS和Windows Phone中的推送技术详解
- 浅谈Java编程中的单例设计模式