【发布时间】:2017-03-06 22:54:51
【问题描述】:
我习惯于编写一个共享的- (void) initialize 函数来处理Objective-C 中的initWithFrame 和initWithCoder 函数。
但是,在 Swift 中,我似乎不允许在调用 super.init() 之前调用函数来执行此操作,之后也不允许,因为在此之前需要初始化属性。
我认为编写 initWithFrame 不再那么重要,但是如果我有一个包含多个初始化方法的自定义类,我想通过使用共享初始化程序来简化呢?
在 super.init() 之前:
required init?(coder aDecoder: NSCoder) {
self.initialize()//use of self in method call initialize before super.init()
super.init(coder: aDecoder)
}
在 super.init() 之后:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.initialize()//property not initialized at super.init call
}
`
【问题讨论】:
-
@vadian 有你的答案。您还可以将“共享”部分分解为在初始化超级视图之前和之后所需的部分。虽然不是一行代码(或函数),但它确实简化了事情。
标签: swift initialization