当前位置: 首页 > 知识库问答 >
问题:

共享实例swift[重复]

冯飞鹏
2023-03-14

你会如何用swift写下以下内容?

static ClassName* singleCommon = nil;
+ (ClassName*)sharedInstance {
    @synchronized(singleCommon) {
        if(!singleCommon) singleCommon = [[ClassName alloc] init];
    }
    return singleCommon;
}

共有2个答案

严朝明
2023-03-14

我通常在Swift中使用sharedInstance,如下所示:

private let _sharedInstance = SomeClass()

class SomeClass: NSObject {

    class var sharedInstance: SomeClass {
        get {
            return _sharedInstance
        }
    }

}

下面是一篇讨论这个问题的博客:http://thatthinginswift.com/singletons/

阮炯
2023-03-14

一个好的解决方案是:

class Singleton {
    class var sharedInstance: Singleton {
        struct Static {
            static var instance: Singleton?
            static var token: dispatch_once_t = 0
        }

        dispatch_once(&Static.token) {
            Static.instance = Singleton()
        }

        return Static.instance!
    }
}

解决方案和解释来自:http://code.martinrue.com

 类似资料:
  • 问题内容: 这是推特的一些代码和平…我想知道如何像在iOS堆栈照片应用程序中一样获得共享操作视图… 问题答案:

  • 在 swift 中,我是否可以创建共享类?也就是说,假设有一个名为 Value 的类: 我想使用这个类在不同的对象实例之间共享。举个例子, 我尝试了在var a上静态,但后来它不会让我做诸如加法之类的算术......但是,如果我将值更改为静态而不是类,它正在起作用。我认为结构和类之间唯一的区别是变量类型或引用类型... 我会感激任何帮助。谢谢

  • 问题内容: 为了进行测试,我想从应用程序加载共享库的两个实例。库中的代码提供了API,但由于某些功能依赖于静态变量,因此它不允许我初始化库的两个(或多个)实例。 我目前正在为此lib编写单元测试,并且我想拥有两个实例,因为这将大大简化我的测试。 该库未链接到该程序。相反,我直接使用LoadLibrary / GetProcAddress(或linux上的dlopen / dlsym)加载它。为了区

  • 本文向大家介绍C++进程间共享数据实例,包括了C++进程间共享数据实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++进程间共享数据的实现方法,分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C++程序设计有所帮助。

  • 本文向大家介绍Springboot Session共享实现原理及代码实例,包括了Springboot Session共享实现原理及代码实例的使用技巧和注意事项,需要的朋友参考一下 在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: 在这样的架构中,会出现一些单服务中不存在

  • 问题内容: 请查看下面的修改 我正在尝试创建一个 JShell实例 ,该 实例 使我可以访问它,并让我与创建它的 JVM中的 对象进行交互。这对于在编译时可用的类很好,但对于 动态 加载的类却失败了。 另外,与交换可以得到相同的结果,但是我不理解两个类之间的区别。 如何使 运行时 加载的类可用于此 JShell实例 ? 编辑:此问题的第一部分已解决,下面是更新的源代码,以演示问题的第二部分 如果