如何在Objective-C中获取给定类的当前实例化对象的列表?

时间:2010-02-18 23:17:24

标签: objective-c reflection objective-c-runtime

由于在Objective-C 2.0中不推荐使用class_poseAs(..),我需要找到另一种在运行时更改对象类的方法。我发现我可以使用object_setClass(..)更改对象的类。我现在的问题是查找给定类的所有当前实例以便更新它们。

解决方案是维护我想要更新的实例的全局字典,但我想知道是否已经有办法从反射api中获取这样的集合。

我查了Apple's Runtime reference,但找不到任何有用的内容。使用 method_exchangeImplementations(..)更新类的方法不是我的解决方案,因为我希望能够通过使用 super来重用实现

1 个答案:

答案 0 :(得分:2)

通常,如果要在自己的特定类中交换各种方法的实现,则需要使用Objective-C 2.0运行时中的method_exchangeImplementations()函数。 (你需要#import objc/runtime.h)。这比尝试换出实际的类要简单得多,因为poseAsClass:在64位运行时中已被弃用且不可用。