将实现协议的 Swift class 导入 Objective-C class

Importing a Swift class that implements a protocol into Objective-C class

我在 Swift 中有一个 class 实现了一个协议:

class SwiftClass: SwiftProtocol {
    func test() {
        NSLog("Test");
    }
}

这是简单的协议

@objc protocol SwiftProtocol {
    func test()
}

当我将其导入并使用 Objective-C class 时,出现此错误

Use of undeclared identifier 'SwiftClass'

  1. 当我使 SwiftClass 扩展 NSObject 时,它工作正常。
  2. 在协议中添加和删除@objc 会产生同样的错误。
  3. 2 个文件的 Target Membership 指向正确的项目。

有没有办法导入实现协议的 class?我做错了什么?

来自 https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID35,部分 Swift 类型兼容性

When you create a Swift class that descends from an Objective-C class, the class and its members—properties, methods, subscripts, and initializers—that are compatible with Objective-C are automatically available from Objective-C.

这与您观察到的一致:如果 SwiftClass 扩展 NSObject,它工作正常。这样解决问题有什么问题吗?