我有以下类别:
@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
的可用性如何对编译器不完全清楚?也许我误解了一些关于类别的东西?
答案 0 :(得分:11)
右。我想到了。这是一个基本的错误,我感到相当愚蠢。如果您希望类别方法对子类可见,请务必在标题中导入您的类别:
#import "UIViewController+Additions.h"
@interface DFAbstractViewController : UIViewController
@end