[英]How to call Objective C method(which is the return protocol) in Swift Language
[英]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
中没有Generics
和Encodable
协议,因此无法使用Generics
和Encodable
协议将您的Swift函数转换为Objective-C等效。 因此,您永远不能从Objective-C文件中调用此类Swift方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.