Можно ли переопределить методы категорий? IOS

Я пытаюсь спланировать, как добавить пару методов ко всем экземплярам определенных объектов. Я думаю, что добавление категории к родительскому объекту (UIViewController) будет работать для того, что я хочу сделать, но могу ли я переопределить метод, добавленный таким образом? Большую часть времени подклассы будут использовать методы по умолчанию, но я знаю, что мне нужно будет переопределить метод хотя бы один раз.

Также, какие другие методы я должен рассмотреть для того, что я пытаюсь сделать?

Пример того, что я пытаюсь сделать:

У меня есть набор объектов, которые действуют как страницы журнала. Эти страницы являются подклассами UIViewControllers. Я хочу добавить методы загрузки, сохранения и тому подобное. В классе журнала (подкласс NSObject) у меня есть массив, в котором хранятся экземпляры каждой страницы журнала. Я хочу, чтобы я мог выбрать страницу из массива и запустить методы, не зная конкретного класса объекта, поскольку все они должны иметь методы.


person Lost Sorcerer    schedule 16.07.2012    source источник


Ответы (1)


Краткий ответ: да, можете. Для целей категорий наследования методы в суперклассе обрабатываются как методы, которые фактически определены в суперклассе, и могут быть переопределены таким же образом.

person Ethan Holshouser    schedule 16.07.2012
comment
Это имеет смысл, но у меня есть ощущение, что в длинном ответе может быть сказано что-то вроде того, что Apple не одобряет это или что-то в этом роде. - person Lost Sorcerer; 16.07.2012
comment
Apple не одобряет использование категории в подклассе для переопределения метода в суперклассе, но нет ничего плохого в использовании метода в подклассе для переопределения категории в суперклассе. На самом деле, всякий раз, когда вы создаете подкласс класса фреймворка, велика вероятность, что вы делаете это, не осознавая этого. - person Ethan Holshouser; 16.07.2012
comment
Спасибо за ответ, но я нашел лучший способ делать то, что хочу. Ничего плохого в вашем ответе нет, просто просмотрел мой код и нашел лучшее место, чтобы сделать дополнительный код, который мне нужен, без добавления методов. - person Lost Sorcerer; 16.07.2012