Как получить список текущих экземпляров объектов для данного класса в Objective-C? - PullRequest
2 голосов
/ 19 февраля 2010

Поскольку class_poseAs (..) устарела в Objective-C 2.0, мне нужно найти другой способ изменить класс объекта во время выполнения. Я обнаружил, что могу изменить класс объекта, используя object_setClass (..). Моя проблема сейчас заключается в нахождении всех текущих экземпляров данного класса для их обновления.

Решением было бы сохранение глобального словаря экземпляров, которые я хочу потенциально обновить, но я хотел бы знать, есть ли уже способ получить такую ​​коллекцию из отражающего API.

Я проверил Справочник по времени выполнения Apple , и я не могу найти ничего полезного. Обновление только метода класса с помощью method_exchangeImplementations (..) не является для меня решением, поскольку я хочу иметь возможность повторно использовать old реализацию с использованием super .

1 Ответ

2 голосов
/ 19 февраля 2010

Обычно, если вы хотите заменить реализацию различных методов в определенном классе на свой собственный, вы должны использовать функцию method_exchangeImplementations () во время выполнения Objective-C 2.0. (Вам нужно будет #import objc/runtime.h). Это гораздо проще, чем пытаться поменять местами реальный класс, поскольку poseAsClass: устарела и недоступна в 64-разрядной среде выполнения.

...