【发布时间】:2021-01-25 19:08:44
【问题描述】:
我知道如何在 swift 中创建单例类。创建单例类的最佳且简单的方法如下:
class Singleton {
static let sharedInstance = Singleton()
}
但我不需要任何普通课程的单身人士。我需要为视图控制器类创建单例。所以我使用这段代码创建单例
class AViewController:UIViewController {
static let sharedInstance = AViewController()
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
AViewController() 附近出现错误
Missing argument for parameter 'coder' in call
看起来它希望我用init(coder: NSCoder) 进行初始化。但是我应该通过coder传递什么参数或值?
【问题讨论】:
-
你检查过
class Singleton : NSObject这个吗? -
你为什么不把有问题的代码放在你的问题中?
-
required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } -
'required public init?(coder aDecoder: NSCoder){ super.init(coder: aDecoder) }' 在你的代码中添加这个
-
视图控制器通常不适合单例。如果你真的想这样做,我们可能需要更多地了解这个视图控制器的视图层次结构是如何创建的(故事板中的场景?NIB?以编程方式创建?)。但是,如果您有兴趣,您可能想解释一下为什么要使用单例,我们也许可以建议更好的模式。
标签: ios swift singleton viewcontroller