У меня есть следующая категория:
@interface UIViewController (Additions)
- (void)exampleMethod;
@end
-----
#import "UIViewController+Additions.h"
@implementation UIViewController (Additions)
- (void)exampleMethod {
NSLog(@"Example.");
}
@end
У меня также есть следующий абстрактный класс:
@interface DFAbstractViewController : UIViewController
@end
-----
#import "DFAbstractViewController.h"
#import "UIViewController+Additions.h"
@implementation DFAbstractViewController
@end
И вот конкретный класс:
#import "DFAbstractViewController.h"
@interface DFConcreteViewController : DFAbstractViewController
@end
-----
#import "DFConcreteViewController.h"
@implementation DFConcreteViewController
- (void)viewDidLoad {
[self exampleMethod];
}
@end
Хорошо. Насколько я понимаю, конкретный класс DFConcreteViewController
может использовать методы, импортированные из категории своего суперкласса DFAbstractViewController
. Это правильно, потому что вызов метода работает так, как ожидалось.
Проблема в том, что Xcode выдает мне следующее предупреждение: 'DFConcreteViewController' may not respond to '-exampleMethod'
.
Я не понимаю, как этот метод и его доступность для DFConcreteViewController
не совсем понятны компилятору? Может быть, я что-то неправильно понял о категориях?