覆盖从函数

时间:2015-06-12 08:12:12

标签: swift class compiler-errors override nsobject

我得到Swift编译错误 - 命令因信号失败:分段错误:11“每当我尝试覆盖从函数中声明的NSObject继承的子类的函数时。

我尝试过不同的类和函数,我得到了所有这些错误。

  1. 如果我覆盖了某个功能或
  2. ,我只会收到错误
  3. 如果我删除NSObject,它可以工作,我没有收到错误。
  4. 任何人都知道这是为什么以及为什么从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继承时传递

2 个答案:

答案 0 :(得分:0)

Cocoa Classclass 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中再次测试过,现在已经修复了