我很快更新到 Xcode 6.3.2 附带的 Swift 1.2 并写了几行代码:
let originView:UIView!
override init() {
super.init()
}
init(sourceView:UIView, menuItems:Array<String>){
super.init()
originView = sourceView
}
这段代码运行完美,直到我更新了新版本的 Xcode (6.3.2)。
现在我收到以下错误:Property 'self.originView' not initialized at super.init call
直到现在我都找不到解决方案,因为我还在学习 Swift。
有人知道我如何解决这个问题吗?
P.S 这不是 this question 的副本因为这段代码:init(sourceView:UIView, menuItems:Array<String>)
而不是 override init(frame: CGRect)
.
更新:
新代码:
override convenience init() {
self.init()
}
init(sourceView:UIView, menuItems:Array<String>){
originView = sourceView
super.init()
}
新错误: Thread 1: EXC_BAD_ACCESS (code=2, address=0x7fff5f300ff8)
在这行代码中:self.init()
最佳答案
尝试修改这部分。
override init() {
super.init()
}
到
override init() {
self.init(UIView(), nil) // Or other initial values
}
如果这不能解决您的错误,这是更好的方法,因为 init() 调用您的自定义 init 并初始化您的变量。
编辑更新
您的修改不正确
override convenience init() {
self.init() // This init referred "override convenience init()" !! So recursive call
}
您必须像我之前所说的那样提供 init 调用的参数,以便将“override convenience init()”重定向到“init(sourceView:UIView, menuItems:Array)”。
关于ios - 更新到 Swift 1.2 后出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874816/