关于 Swift 单例的例子

有的时候,我们需要一个类只要初始化一次就够了,比如音频播放器这种实例,因此需要我们使用单例,熟悉C++和OC都知道该怎么写

class CSingleton /* 懒汉式 */
{
public:
    static CSingleton * GetInstance()
    {
        if(m_pInstance == NULL) //判断是否第一次调用
            m_pInstance = new CSingleton;
        return m_pInstance;
    }
        void RelaseInstance()
        {
            delete this;
        }
private:
        CSingleton() //构造函数是私有的
        {
        }
        CSingleton(const CSingleton& that)//拷贝构造函数也应是私有的
        {

        }
        ~CSingleton()
        {
            m_pInstance = NULL;
        }
        static CSingleton *m_pInstance;
};
+(SingalClass*)shareInstance  //单例都使用+号,下面的都可以写成宏调用
{
//利用GCD创建一个单例模式
//第一个参数predicate,该参数是检查后面第二个参数所代表的代码块是否被调用的谓词,第二个参数则是在整个应用程序中只会被调用一次的代码块。dispach_once函数中的代码块只会被执行一次,而且还是线程安全的。
static dispatch_once_t once;
dispatch_once(&once, ^{
single=[SingalClass alloc];
});
return single;
}

Swfit更简单了:

class SwiftySingleton {
static let shared = SwiftySingleton() // “懒实例化”的全局变量会被自动放在dispatch_once块中[4]
private init(){}
}

原文地址:https://www.cnblogs.com/RoysPhoneBlog/p/8502774.html

时间: 2024-07-30 14:11:45

关于 Swift 单例的例子的相关文章

OC & Swift 单例

1. OC 单例 + (NetworkTool *)sharedNetworkTool { static id instace; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instace = [[self alloc] init]; }); return instace; } 2. Swift 单例 private static let instance = NetworkTool() class func sh

Swift单例的写法

Swift单例的写法 by 伍雪颖 override func viewDidLoad() { super.viewDidLoad() let instance = SingletonClass.shared } class SingletonClass { class var shared: SingletonClass { struct Static { static let instance: SingletonClass = SingletonClass() } return Stati

swift -- 单例

方式一: (类似OC) class SingletonDispatch{ class var shareInstance : SingletonDispatch { //结构体 struct Static {    static var onceToken : dispatch_once_t = 0 static var instance : SingletonDispatch? = nil } //创建 dispatch_once(&Static.onceTokec){ Static.inst

Swift单例

单例的实现有多种方法,如下面 class SwiftSingleton { class var shared: SwiftSingleton { if !Inner.instance { Inner.instance = SwiftSingleton() } return Inner.instance! } struct Inner { static var instance: SwiftSingleton? } } 这段代码的实现,在shared中进行条件判断,如果Inner.instance

Swift中编写单例的正确方式

Swift中编写单例的正确方式 2015-12-07 10:23 编辑: yunpeng.hu 分类:Swift 来源:CocoaChina翻译活动 14 10647 Objective-CSwift单例 招聘信息: Cocos2d-x 工程师 cocos2dx手游客户端主程 wp开发 iOS开发工程师 iOS软件工程师 iOS研发工程师 iOS讲师 iOS开发工程师 iOS高级开发工程师 iOS 高级软件工程师 iOS高级开发工程师 本文由CocoaChina译者leon(社区ID)翻译自kr

Objective-C和Swift实现单例的几种方式

在Swift开发中,我们对于跨类调用的变量常量,因为并没有OC中使用的全局头文件中写宏的形式,我们一般采用在类外定义全局变量/常量的形式来跨类调用.而问题在于目前写的项目需要在新添加的OC写的功能模块中调用Swift的全局变量,这样编译器是没办法帮你调到的.为了解决这个问题,我考虑来写一个Swift单例来保存全局变量,并由OC的类来调取数据. 在iOS设计中,单例这种设计模式经常用到,也是是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其为一种实现技巧.原因是设计模式讲究对象之间的关

滥用单例

原文: http://objccn.io/issue-13-2/ 单例是整个 Cocoa 中被广泛使用的核心设计模式之一.事实上,苹果开发者库把单例作为 "Cocoa 核心竞争力" 之一.作为一个iOS开发者,我们经常和单例打交道,比如 UIApplication 和 NSFileManager 等等.我们在开源项目.苹果示例代码和 StackOverflow 中见过了无数使用单例的例子.Xcode 甚至有一个默认的 "Dispatch Once" 代码片段,可以使

避免滥用单例

单例是整个 Cocoa 中被广泛使用的核心设计模式之一.事实上,苹果开发者库把单例作为 "Cocoa 核心竞争力" 之一.作为一个iOS开发者,我们经常和单例打交道,比如 UIApplication 和 NSFileManager 等等.我们在开源项目.苹果示例代码和 StackOverflow 中见过了无数使用单例的例子.Xcode 甚至有一个默认的 "Dispatch Once" 代码片段,可以使我们非常简单地在代码中添加一个单例: + (instancetyp

单例-b

这个比较老了,是mrc 里面的 此例以模仿Apple官方文档的单例写出来的.但是一直有一个非常不明白的地方,就是alloc与allocWithZone:的重载中,为什么要return [[self currentEnvironment] retain];,而不是return [self currentEnvironment];. 有的朋友认为alloc, copy在这个单例中没有意义,因为alloc会再次的调用allocWithZone, copy会调用copyWithZone.但是为了保险起见