【问题标题】:How to override the NSObject methods without inheriting from NSObject in swift如何在不从 NSObject 继承的情况下快速覆盖 NSObject 方法
【发布时间】:2016-08-05 07:11:05
【问题描述】:

我实际上想知道如何从NSObject 或任何其他类访问encodeWithCoderinit 等方法,而不是从NSObject 类继承。

因为我读到如果我们从 NSObject 类继承,那么它在 Swift 或与 Objective - C 类似的性能方面存在性能问题。

所以请告诉我该怎么做。

【问题讨论】:

  • 我不认为它必须是一个 NSObject,它只需要符合 NSCoding 协议

标签: ios objective-c swift inheritance objective-c-runtime


【解决方案1】:

你想从一个不继承该超类的类中重写一个超类方法,这是没有意义的。如果需要使用 encodeWithCoder 方法,则必须扩展 NSObject 类或任何其他符合 NSCoding 协议的类。否则,您可以创建符合 NSCoding 协议的自定义类,并在 encodeWithCoder 方法中实现相同的功能。

来自Apple documentation

任何不继承自另一个类的类都称为基类。

注意

Swift 类不继承自通用基类。给你上课 在不指定超类的情况下定义自动成为基类 供您构建的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2017-02-17
    • 2012-06-13
    相关资源
    最近更新 更多