gpt4 book ai didi

ios - 如何在 swift 中创建一个 UIView 单例?

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:58 26 4
gpt4 key购买 nike

我想避免像这样创建 UIView:

let singleView = SingleView()

这是我如何创建 SingleTon 的:

class SingleView:UIView {

static let sharedInstance = SingleView()

private init() {
super.init(frame:CGRectZero)
}

override init(frame:CGRect) {
super.init(frame: frame)
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}

但是它会编译成功。

最佳答案

首先, View 单例不是一个好主意,因为一个 UIView 实例将只有一个 superView,例如仅是一个其他 View 的 subview 。

  • 如果您只使用一次,则共享实例没有任何好处。
  • 如果您在不同的 UIViewController 实例中使用它,它的行为可能不会如您预期的那样。

总之,你似乎连单例都不想要,这很好。

那么,这个怎么样?

class SingleView:UIView {
init() {
super.init(frame:CGRectZero)
}

override init(frame:CGRect) {
super.init(frame: frame)
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}

现在您可以像您一直想要的那样在构造函数中进行无参数初始化。

PS:请注意,swift 中的构造函数总是创建新实例(或根本不创建)。如果你想使用单例,你隐藏构造函数并提供一个工厂方法(或像你一样的static let)。

关于ios - 如何在 swift 中创建一个 UIView 单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35500492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com