Xcode 7包含一个Objective-C变体,您可以在其中定义(同源)NSArray
返回值和属性的类型提示,定义为NSArray<UIImage*>
。
我想使用这个功能来重写我的JSON-deserializer类(需要这种类型的提示 - 之前我已经通过在我的类中添加-(Class)jsonHintForKey:(NSString*)key
来解决这个问题,这些类具有同构数组作为属性。 )
您是否知道(如果是这样,如何)我可以使用Objective-C运行时在运行时获取此新类型提示的类?
答案 0 :(得分:30)
Xcode 7中引入的轻量级泛型只是编译时提示,可以帮助编译器发出警告,但在运行时,您的变量只有NSArray
个id
s的变量。
来源:WWDC '15 "Swift and Objective-C Interoperability" session
请参阅the transcript of the talk:
因此整个轻量级泛型功能基于type erasure model。这意味着编译器具有所有这些丰富的静态类型信息,但在生成代码时会删除该信息。
答案 1 :(得分:7)
不可能这样做。
在objective-c中引入了泛型,以改善swift和objective-c之间的桥梁。它给objective-c带来的好处只是在编译时很有用,而且我在运行时丢失了信息。