【发布时间】:2015-02-15 05:14:03
【问题描述】:
我刚开始阅读有关 Swift 的信息。几年前曾经在这里和那里做objective-c,我有一个愚蠢的问题。在 Swift 中,你应该或不应该继承 NSObject 吗?有没有关于它的最佳实践?
在操场上,我可以这样做:
public class Printer {
public func SaySomething(s : String) {
print(s);
}
}
var pr = Printer()
pr.SaySomething("yo");
这一切都按预期工作。但是,我认为我可以通过创建 Cocoa Touch 框架来快速练习。因此,我创建了 Printer.swift,复制并粘贴了您在上面看到的类。然后在 TestLibraryTests 文件中,我尝试实例化打印机。所以我做到了
var p : Printer = Printer()
我收到了错误,Printer cannot be constructed because it has no accessible initializers.
所以我添加了init() {}。
public class Printer {
init() {}
public func SaySomething(s : String) {
print(s);
}
}
仍然没有构建。我得到了同样的错误。然后,一旦我说打印机是 NSObject 的子类,一切正常。这是为什么?在这一点上,您是否有任何时候不应该从 NSObject 子类化?
【问题讨论】:
-
打印语法是 println() 而不是 print(),试试吧!
-
不需要 NSObject。只需说 public init() {}。
标签: ios objective-c swift