是否有与 Objective-C 相当的 Swift@encode
?
例如
@encode(void *) // -> @"^v"
搜索一无所获。
不,不存在——因为在底层 Swift 类不使用 Objective-C 内省来完成它们的工作。不需要计算这个(像 Objective-C 中那样)来传递/调用数据。
但是,如果您需要在运行时动态使用它(例如,与现有 Objective-C 方法进行互操作),那么您可以创建一个 Objective-C 调用并传递对象,或者(对于简单类型)编写一个查找表。
类型编码列于https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html其中有映射,并且可以编写执行查找的 switch 类型语句。
但从根本上来说,如果您想要传入一个类型并找到它的目标 c 编码类型,则可以使用 NSObject objC Type 方法:
var i = 1 as NSNumber
String.fromCString(i.objCType)! == "q"
如果您需要将其作为不受干扰的 C 字符串传递,您甚至可能不需要将其转换回 Swift 字符串类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)