我有一个实现新互操作机制的项目,我能够直接从 swift 成功调用 swift 类方法。但是,当我尝试调用 swift 扩展方法时,它会产生错误:“InteropExtension::SwiftCode”中没有名为“GetExtData”的成员
下面是我的cpp代码:
#include "CppSource.hpp"
#include "InteropExtension-Swift.h"
void CppSource::CppToSwiftCall()
{
// successfull call
InteropExtension::SwiftCode::GetClassData();
//Below call is causing error. Why is swift extension method not invoked?
InteropExtension::SwiftCode::GetExtData();
}
下面是我的快速代码:
import Foundation
public class SwiftCode {
public static func GetClassData () -> String
{
return "classMethod"
}
}
extension SwiftCode {
public static func GetExtData () -> String
{
return "ExtMethod"
}
}
有人可以帮忙解释为什么扩展方法没有被调用,以及如何调用它吗?
不直接支持从 C++ 调用 Swift 扩展方法。您必须通过 Swift 类本身中的常规方法公开它们,或者提供从 Swift 到 C++ 的桥梁。 你可以在 swift 类中提供这样的方法
import Foundation
public class SwiftCode {
public static func GetClassData () -> String {
return "classMethod"
}
public static func GetExtData () -> String {
return "ExtMethod"
}
// You can also provide a method that explicitly calls the extension method.
public static func CallGetExtData() -> String {
return GetExtData()
}
}