我怎样才能找到Objective-C泛型类型?

DrM*_*uer 16 generics xcode objective-c ios

Xcode 7包含一个Objective-C变体,您可以在其中定义(同质)NSArray返回值和属性的类型提示,定义如下NSArray<UIImage*>.

我想使用这个功能来重写我的JSON-deserializer类(需要这种类型的提示 - 之前我已经通过-(Class)jsonHintForKey:(NSString*)key在我的类中添加了一个同源数组作为属性来解决这个问题.)

你知道我是否可以使用Objective-C运行时在运行时获取这个新类型提示的类吗?

Gui*_*gis 31

Xcode 7中引入的轻量级泛型只是编译时提示,以帮助编译器发出警告,但在运行时,您的变量只是NSArrays的变量id.

资料来源:WWDC '15"Swift和Objective-C互操作性"会议

看到谈话的记录:

因此,整个轻量级泛型功能基于类型擦除模型.这意味着编译器具有所有这些丰富的静态类型信息,但它在生成代码时会删除该信息.


Tia*_*ida 8

这样做是不可能的.

在Objective-c中引入了泛型,以改善swift和objective-c之间的桥梁.它给objective-c的优势仅在编译时有用,而且我在运行时丢失了信息.