将实现协议的 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'
- 当我使 SwiftClass 扩展 NSObject 时,它工作正常。
- 在协议中添加和删除@objc 会产生同样的错误。
- 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
,它工作正常。这样解决问题有什么问题吗?
我在 Swift 中有一个 class 实现了一个协议:
class SwiftClass: SwiftProtocol {
func test() {
NSLog("Test");
}
}
这是简单的协议
@objc protocol SwiftProtocol {
func test()
}
当我将其导入并使用 Objective-C class 时,出现此错误
Use of undeclared identifier 'SwiftClass'
- 当我使 SwiftClass 扩展 NSObject 时,它工作正常。
- 在协议中添加和删除@objc 会产生同样的错误。
- 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
,它工作正常。这样解决问题有什么问题吗?