我得到Swift编译错误 - 命令因信号失败:分段错误:11“每当我尝试覆盖从函数中声明的NSObject继承的子类的函数时。
我尝试过不同的类和函数,我得到了所有这些错误。
任何人都知道这是为什么以及为什么从NSObject继承有所作为呢?
示例:
class ParentClass: NSObject {
func returnFooString() -> String {
return "foo"
}
}
//This Fails
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
class childClass: ParentClass {
override func returnFooString() -> String {
return "bar"
}
}
}
}
//This Passes
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
class childClass: ParentClass {
func returnBarString() -> String {
return "bar"
}
}
}
}
覆盖returnFooString函数只会在ParentClass不从NSObject继承时传递
答案 0 :(得分:0)
Cocoa Class
从class MyClass: NSObject {
var someProperty: NSString // no need (!). It will be initialised from controller
init(fromString string: NSString) {
self.someProperty = string
super.init()
}
convenience override init() {
self.init(fromString:"John") // calls above mentioned controller with default name
}
}
延伸,它拥有自己的init方法。删除NSObject时,它转向普通的swift类,不需要Cocoa Class init。这就是为什么它不会给出错误。
NSObject的初始化样本
{{1}}
答案 1 :(得分:0)
这似乎是旧版Swift中的一个错误。我已经在Swift 2.0中再次测试过,现在已经修复了