繁体   English   中英

如何调用swift方法哪个参数是Objective C的协议

[英]How to call a swift method which parameter is a protocol from Objective C

如何调用swift方法哪个参数是Objective C的协议

Class A
{
func sendMessage<Serializable: Encodable>(message:Serializable){
        let jsonData =   try! JSONEncoder().encode(message)

    }
}

客观的C代码

A a = [[A alloc] init];
[a sendMessage] ;// Not Available

如何从Objective C调用此方法

我认为sendMessage不会出现在已编译的TargetName-Swift.h因为Objective-C没有Generics和Encodable协议。

很明显,当你使用

sendMessage<Serializable: Encodable>(message:Serializable)

您使用Generics以及Encodable协议,该协议仅在Swift中可用,而不在Objective-C中

当您尝试访问Swift在你的函数Objective-C文件,编译器创建一个Objective-C你当量/对口Swift功能,因此你看到署名为你的那些方法TargetName-Swift.h文件。

但是Objective-C中没有GenericsEncodable协议,因此无法使用GenericsEncodable协议将您的Swift函数转换为Objective-C等效。 因此,您永远不能从Objective-C文件中调用此类Swift方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM