Swift 关于NSObject使用的歧义?

Swift 关于NSObject使用的歧义?,swift,nsobject,foundation,Swift,Nsobject,Foundation,我是ios开发新手,开始使用swift编写代码,我对NSOject有一些基本问题,但我找不到任何令人满意的答案 我的问题是,如果我们创建了一个新类< /强>,则强制该类必须从基础(IE)的根类< /强>、 NSbObjs>强> >还是可选的,因为现在在xCux.< /P>中有 > SWIFT文件模板。 import UIKit class Myclass: NSObject { } 或 任何帮助都将不胜感激……可选 从 Swift类不会从通用基类继承。您在不指定超类的情况下定义的类

我是ios开发新手,开始使用swift编写代码,我对NSOject有一些基本问题,但我找不到任何令人满意的答案

我的问题是,如果我们创建了一个<强>新类< /强>,则强制该类必须从基础(IE)的<强>根类< /强>、<强> NSbObjs>强> >还是可选的,因为现在在xCux.< /P>中有<强> > SWIFT文件<强>模板。

 import UIKit

 class Myclass: NSObject {

 }

任何帮助都将不胜感激……

可选

Swift类不会从通用基类继承。您在不指定超类的情况下定义的类将自动成为您构建的基类


您不必从NSObject继承。但是,如果需要某些运行时功能,您可能希望从NSObject继承。例如,如果您想使用KVO(键值观察),或者您想做一些更高级的事情,比如方法swizzling


一般来说,我建议不要从NSObject继承,除非您发现需要继承的问题。

使用和不使用
NSObject
之间有很大的区别

Jasper Blues写了一篇文章,介绍了使用
NSObject
的优缺点

长话短说:

在Swift中对NSObject进行子类化可以获得Objective-C运行时的灵活性,但也可以获得Objective-C性能。如果不需要Objective-C的灵活性,避免NSObject可以提高性能


上述答案是正确的,但在许多情况下,您可能需要/希望从
NSObject
继承@比尔兹利先生提到了一对夫妇。我想补充一点,如果您正在与Cocoa/Cocoa Touch API或苹果的许多其他框架交互,出于许多互操作性原因,您可能希望继承自
NSObject

例如,如果您希望您的类符合
NSCoding
协议,或任何标准委托或数据源协议(例如
UITableViewDataSource
),那么通过继承
NSObject
,您将省去很多麻烦。我同意除非您需要,否则不要继承的建议,但我发现在使用苹果的API时,这通常是必要的

import UIKit

     class Myclass {  // where here myclass is the base class

     }