首页 > 解决方案 > 为什么我不能在 Xcode 12 中覆盖 isEqual(_ object:)?

问题描述

我正在使用一个最初用 Swift 编写的类,它NSObject从第三方 XCFramework 扩展而来:

open class ExampleClass: NSObject, Codable { ... }

由于这是一个第三方类,我无法修改原来的类,所以我在它之上创建了一个扩展来覆盖 isEqual(_ object:)

extension ExampleClass {
    override open func isEqual(_ object: Any?) -> Bool {
        return true
    }
}

这目前在 Xcode 11 上编译和构建良好,但在 Xcode 12 上使用相同的分支,我收到一个错误消息'@objc' instance method in extension of subclass of 'ExampleClass' requires iOS 13.0.0

我发现了一个类似的问题,似乎暗示在 Swift 扩展中不能覆盖功能,但我试图了解自从从 Xcode 11 迁移到 12 后发生了什么变化。最近有什么变化阻止了这种情况发生?关于解决这个问题的任何想法?

标签: iosobjective-cswiftxcode

解决方案


推荐阅读