Swift相当于@encode

Cla*_*ges 21 objective-c swift

Swift是否与Objective-C相当@encode

例如

@encode(void *) // -> @"^v"
Run Code Online (Sandbox Code Playgroud)

搜索没有产生任何结果.

AlB*_*lue 5

不,没有 - 因为在引擎盖下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" 
Run Code Online (Sandbox Code Playgroud)

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

  • `objCType`是`NSValue`的方法,而不是'NSObject`. (3认同)