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

如何在swift中创建单例对象

斜成济
2023-03-14

我正在快速有效地学习单例模式来创建单例类,并找到了如下创建的最佳方法。

class SingletonClass{
    static let sharedInstance = SingletonClass()
}

因为我使用了let语句,所以它是只读属性,必须是线程安全的,所以从目标C开始就不需要调度一次。static用于将sharedInstance变量设置为class变量。

但这如何保证在整个应用程序中只创建一个实例呢?有什么我错过的小东西吗?

共有3个答案

仉伟兆
2023-03-14

使私有初始化,例如:

final class Singleton {

    // Can't init is singleton
    private init() { }

    //MARK: Shared Instance

    static let sharedInstance: Singleton = Singleton()

    //MARK: Local Variable

    var emptyStringArray : [String] = []

}
贝阳泽
2023-03-14

保证只创建一次的是关键字static。你可以参考这篇文章:https://thatthinginswift.com/singletons/

希望这有帮助。

static关键字表示可以访问成员变量或方法,而无需对其所属的类进行实例化。简单来说,这意味着您可以调用一个方法,即使您从未创建过它所属的对象

慕容劲
2023-03-14

如果您想阻止类的实例化(有效地将使用限制在单例中),那么您可以将初始值设定项标记为private

class SingletonClass {

    static let shared = SingletonClass()

    private init() {
        // initializer code here
    }
}
 类似资料:
  • 我需要在Swift中创建一个singleton类。谁能帮我查一下密码吗?我已经知道,单例类在创建泛型代码方面非常有用。

  • 问题内容: 我知道如何快速创建单例类。创建单例类的最佳简便方法如下: 但是我不需要任何普通班的单身人士。我需要为viewcontroller类创建单例。所以我用这段代码创建单例 它给我附近的错误 似乎要我使用进行初始化。但是我应该通过什么参数或值? 问题答案: 如果您真的想为某个场景对应的视图控制器设置单例,则可能需要执行以下操作: 在此示例中,情节提要是,问题场景的情节提要标识符是。显然,将这​

  • 问题内容: 如何从Swift XCode中的日期创建日期对象。 例如在JavaScript中,你会做: 问题答案: 雨燕有自己的类型。无需使用。 在Swift中,日期和时间存储在64位浮点数中,该浮点数用于测量自2001年1月1日UTC的参考日期以来的秒数。这在结构中表示出来。以下内容将为您提供当前日期和时间: 若要创建其他日期时间,可以使用以下方法之一。 方法一 如果您知道2001年参考日期之前

  • 问题内容: 我一直在四处搜寻有关如何使用Swift 2.0为MapView制作MKCircle注释的良好解释,但我似乎找不到足够的解释。有人可以张贴一些示例代码来显示如何创建MKCircle批注吗?这是我用来制作地图并获取坐标的代码。 问题答案: 将展示有关如何使用xcode 8.3.3的swift 3在地图视图上创建圆形叠加层的分步方法 在您的主故事板文件中,将地图工具包视图拖到故事板的场景(视

  • 问题内容: 我一直在努力在Swift中创建UIAlertView,但由于某种原因,由于出现此错误,我无法正确执行该语句: 找不到接受提供的参数的’init’的重载 这是我的写法: 然后调用它,我正在使用: 截至目前,它崩溃了,我似乎无法正确理解语法。 问题答案: 从班级: //不推荐使用UIAlertView。改用 UIAlertController 和UIAlertControllerStyle

  • 我一直在Swift中创建一个UIAlertView,但由于某种原因,我无法得到正确的语句,因为我得到了以下错误: 找不到接受所提供参数的“init”的重载