【问题标题】:Find NSMutableArray<ObjectType> ObjectType at runtime在运行时查找 NSMutableArray<ObjectType> ObjectType
【发布时间】:2016-12-16 13:55:10
【问题描述】:

我有一个NSMutableArray,我想在其中添加那些符合ObjectType 的对象。有什么办法可以让ObjectType 使用轻量级泛型声明,所以在添加对象时我可以检查对象是否要插入是ObjectType;如果是就插入它,否则就忘了它。

谢谢。

【问题讨论】:

标签: objective-c cocoa nsmutablearray nsarray


【解决方案1】:

在 Objective-C 中,所有类型分析都是在运行时完成的,并且只在运行时完成。 (编译器在编译时给出警告,但生成的代码与任何其他对象类型的代码有点相同。)轻量级泛型适用于 Swift。在过去的 30 年里,我们不需要它。 (哇,这在计算机科学中真的很长。)

因此,任何与带有或不带类型说明符的可变数组相关的代码都是相同的。对于 Objective-C 来说,静态类型信息是错误的。即使有办法做到这一点,这也是反概念的。

所以:没有。

你为什么要这样做?不要这样做。

【讨论】:

  • 假设我对每种类型都有不同的数组,每个数组包含数千个对象。我曾考虑通过每次摆脱自省来降低计算能力。
  • 我不明白,为什么每次都需要“自省”。如果您想根据类型做一些特定的事情,请制定一个协议,将其添加到类别中的类中并以不同的方式实现方法。但是,运行时会对每个消息分派进行自省。如果您遇到性能问题,请创建一个新 Q,显示代码,然后一个会帮助您。
猜你喜欢
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 2019-05-08
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
相关资源
最近更新 更多