【问题标题】:Get array type in runtime objective-c [duplicate]在运行时objective-c中获取数组类型[重复]
【发布时间】:2016-02-16 08:37:45
【问题描述】:

objective-c 中是否有任何方法可以找到下一种方式声明的属性类型: @property(nonatomic, strong) NSArray<CustomClass *> *array; 我可以将此属性的类型作为 NSArray,但是有什么方法可以获取 CustomClass 类型?

提前致谢。

【问题讨论】:

    标签: ios objective-c runtime


    【解决方案1】:

    无法在运行时接收有关泛型声明的信息。 Objective-C 泛型是语言的最新补充。它们仅用于编译时检查,因此不会创建任何额外的运行时信息。请注意,泛型声明并不严格阻止将其他类的对象存储在数组中 - 编译器警告可能会被抑制,尽管这是一种不好的做法。

    但是,仍然有可能确定对象的类别,存储在数组中。例如,您可以使用[array valueForKey:@"class"] 之类的代码来接收与每个元素对应的类数组。

    【讨论】:

      【解决方案2】:

      轻量级泛型中的类型提示主要由编译器用来发出警告,并且在运行时不可用。

      此 SO link 提供了有关 Apple 文档/视频的更多信息和参考。为方便起见,我在这里添加一些信息。

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

      【讨论】:

        猜你喜欢
        • 2011-10-01
        • 2013-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-05
        相关资源
        最近更新 更多