У меня есть следующая категория:
@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
не совсем понятны компилятору? Возможно, я неправильно понял что-то о категориях?