重写从函数中声明的NSObject继承的子类的函数时发生Swift编译器错误
我得到Swift编译器错误-每当我试图重写从函数中声明的NSObject继承的子类的函数时,由于信号:Segmentation fault:11“命令失败 我用不同的类和函数尝试过,我得到了所有类和函数的错误重写从函数中声明的NSObject继承的子类的函数时发生Swift编译器错误,swift,class,compiler-errors,overriding,nsobject,Swift,Class,Compiler Errors,Overriding,Nsobject,我得到Swift编译器错误-每当我试图重写从函数中声明的NSObject继承的子类的函数时,由于信号:Segmentation fault:11“命令失败 我用不同的类和函数尝试过,我得到了所有类和函数的错误 只有在重写函数或 如果我删除NSObject,它会工作,并且不会出现错误 有人知道为什么会这样,为什么从NSObject继承会有所不同吗 例如: class ParentClass: NSObject { func returnFooString() -> String {
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"
}
}
}
}
只有当ParentClass不从NSObject继承时,重写returnFooString函数才会通过。NSObject继承自具有自己的init方法的Cocoa类。删除NSObject时,它会变成普通的swift类,不需要Cocoa类init。这就是为什么它不给出错误的原因 NSObject的初始化示例
NSObject
是从Cocoa类
扩展而来的,它有自己的init方法。删除NSObject时,它会变成一个普通的swift类,不需要Cocoa类init。这就是为什么它不会给出错误
NSObject的初始化示例
这似乎是旧版本Swift中的一个错误。我在Swift 2.0中再次测试,现在已修复了它。这似乎是旧版本Swift中的一个错误。我在Swift 2.0中再次测试,现在已修复了它。是的,我知道,但我没有在上述代码中初始化任何内容?我还知道NSObject需要Cocoa类初始化,但为什么会有不同?是的,我知道,但我没有在上面的代码中初始化任何东西?我也知道NSObject需要Cocoa类初始化,但为什么会有不同?是的,我知道,但我没有在上面的代码中初始化任何东西?我也知道NSObject需要Cocoa类初始化,但为什么这有什么不同吗?
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
}
}