Swift相当于@encode?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (82)

是否有相当于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中列出,它们有地图,可以编写一个开关类型语句抬头。

但从根本上来说,如果你有一个你想传入的类型,并且发现它是客观的c编码类型,你可以使用NSObject的objCType方法:

var i = 1 as NSNumber
String.fromCString(i.objCType)! == "q" 

如果你需要把它作为一个不受干扰的C字符串传递,你甚至可能甚至不需要将它转换回Swift字符串类型。

扫码关注云+社区

领取腾讯云代金券