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

时间:2017-11-07 23:36:21

标签: objective-c swift xcode import interop

我在Swift中有一个实现协议的类:

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

这是简单的协议

@objc protocol SwiftProtocol {
    func test()
}

当我导入它并使用Objective-C类时,它会出现此错误

  

使用未声明的标识符'SwiftClass'

  1. 当我使SwiftClass扩展NSObject时,它工作正常。
  2. 在协议中拥有和删除@objc会产生相同的错误。
  3. 2个文件的目标成员资格指向正确的项目。
  4. 有没有办法导入实现协议的类?我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

  

当您创建一个源自Objective-C类的Swift类时,   类及其成员 - 属性,方法,下标和   初始化程序 - 与Objective-C兼容是自动的   可从Objective-C获得。

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