由于在Objective-C 2.0中不推荐使用class_poseAs(..),我需要找到另一种在运行时更改对象类的方法。我发现我可以使用object_setClass(..)更改对象的类。我现在的问题是查找给定类的所有当前实例以便更新它们。
解决方案是维护我想要更新的实例的全局字典,但我想知道是否已经有办法从反射api中获取这样的集合。
我查了Apple's Runtime reference,但找不到任何有用的内容。使用 method_exchangeImplementations(..)更新类的方法不是我的解决方案,因为我希望能够通过使用 super来重用旧实现
答案 0 :(得分:2)
通常,如果要在自己的特定类中交换各种方法的实现,则需要使用Objective-C 2.0运行时中的method_exchangeImplementations()函数。 (你需要#import objc/runtime.h
)。这比尝试换出实际的类要简单得多,因为poseAsClass:
在64位运行时中已被弃用且不可用。