У меня есть классная структура типа UIViewControllerSubclass : UIViewController
, где единственная функция UIViewControllerSubclass - #import UIViewController+Category.h
. Причина, по которой я добавил методы в категорию, так это то, что я могу сделать также UITableViewControllerSubclass : UITableViewController
, что также будет #import UIViewController+Category.h
. Как мы все знаем, не повторяйте себя.Можно ли переопределить определенный в категории метод в Objective-C?
Теперь предположим, что UIViewController + Category.h имеет структуру:
@interface UIViewController(Category)
- (void) method1;
- (void) method2;
@end
Насколько это безопасно для создания UIViewControllerSubclassSubclass : UIViewControllerSubclass
, который перекроет method1
? Я предполагаю, что это будет работать из-за передачи сообщения Objective-C, но по какой-то причине моя интуиция говорит мне, что я делаю это неправильно.
Вы должны помнить, что Objective-C является «утиной типизированной». Если класс поддерживает метод, который вы можете (безопасно) вызвать, даже если этот метод не определен в файле .h. (Как вы пробираетесь мимо проверок компилятора, зависит от вас.) –