Какао, NSProxy, Как перенять метод в объекте?
Мне нужно заменить метод в объекте моей собственной реализацией. Например,
Person *p; // some object
NSMutableArray *array = [NSMutableArray array];
[array addObject: p];
Как я могу заменить addObject собственным методом?
Другими словами, есть ли способ заменить реализацию addObject:
КОНКРЕТНОГО объекта с другой реализацией?
Я играл с NSProxy
но не мог узнать, что мне делать.
Любая помощь будет высоко оценена.
Спасибо
3 ответа
Сделайте этот объект экземпляром другого класса с другой реализацией для метода.
Вы можете использовать категорию, чтобы переопределить :addObject
метод NSMutableArray
, См. Учебное пособие Learn Objective-C (раздел 11) для получения дополнительной информации.
Вы можете использовать метод Swizzling подход для замены методов во время выполнения. На самом деле был такой же вопрос, как и у вас на SO, я думаю, что решение finsl должно работать и для вас - Метод изобилия для NSArray