2
我有以下類別:Objective-C類別方法可用於子類嗎?
@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
的可用性是不是完全清楚的編譯器?也許我誤解了類別的一些東西?
一直有同樣的問題,並在努力解決這個問題在你的崗位來了。但是,我包含正確的頭文件(類+類),並仍然收到編譯器警告。 – 2011-01-26 09:25:32
馬特,你是否在頭文件(.h)中導入類別而不是實現?編譯器只能在.h文件中導入類別時才能看到超類別方法。 – 2011-01-26 14:35:07