作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想避免像这样创建 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/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!