Какао, 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

Другие вопросы по тегам