何时以及为什么一个类是NSObject的子类?

时间:2014-12-11 08:55:11

标签: swift

在一些教程中,我看到了:

class MyClass: NSObject {

    var a: String!
    var b: String!

    init(a: String, b: String) {
        super.init()
        self.a = a
        self.b = b
    }
}

我的印象是swift类不需要子类化任何东西。是否有人想要从NSObject中继承子类?

2 个答案:

答案 0 :(得分:2)

NSObject课程并不那么重要。真正重要的是NSObject协议,在Swift中名为NSObjectProtocol

例如,Cocoa / CocoaTouch中的大多数协议都继承自NSObjectProtocol。这意味着如果要使用此类协议(例如,实现委托),则必须实现NSObjectProtocol中的所有方法。这很难,但NSObject类为您实现了所有这些,因此最简单的解决方案是从NSObject类继承。

答案 1 :(得分:0)

当你没有NSObject的子类时,你会失去它附带的所有很酷的东西Selector:performSelector,respondsToSelector等...... 另外 - 通过这种方式,您可以确保Swift代码对象可以与传统的Objective-C代码进行交互。