您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Swift 3:是否继承NSObject?

Swift 3:是否继承NSObject?

苹果公司有关NSObject的文档介绍如下:

NSObject是大多数Objective-C类层次结构的根类。通过NSObject,对象继承了运行时系统的基本接口,并具有充当Objective- C对象的功能

因为这将意味着,你 需要 子类NSObject的代码中的引入类型每当这种类型的需求情况表现得像一个Objective- C对象(或类本身,在某些罕见的情况下)。

除了不建议减少动态分派或使用不依赖于子类而是协议扩展的代码重用范式(减少代码的重用范式)外,我不知道苹果公司是否提供了关于何时 继承NSObject的书面指导,即代码重用通常更具静态的派生和价值。类型友好)。我相信可以公平地说,尽管大多数Swift程序员都从Apple那里获得了一些提示,而Swift语言功能是避免在上述需求不存在时避免引入基于NSObject的类型的标志。

正如您所链接的问题的答案中指出的那样,Objective- C风格的动态性带来了objc_msgSend基于方法的调度的性能。尽管Swift类中的方法也是虚拟的,但是当您不显式标记带有@objc属性方法时,编译器可以使用更快的方法来调度方法- 尤其是在“启用整个模块优化”功能时,尤其在Swift 3中,默认情况下,在定义类型的模块以外的子类中,不打开类

除了避免使用NSObject,在编写Swift时,在许多情况下还可以完全避免基于类的引用类型。例如,查看上面链接的WWDC视频的值类型,或以本博客文章作为介绍。简而言之,使用值类型可以获得良好的局部推理,通常会避免动态内存分配和引用计数开销(尽管并非普遍如此- 将引用类型的结构作为字段来说明)。

Swift 2022/1/1 18:14:15 有375人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶