說我們有父類如何在使用類別子類化類時避免編譯警告?
ParentViewController.h
@interface ParentViewController
....
@end
ParentViewController.m
@interface ParentViewController()
- (NSArray *)selectedItems;
@end
@implementation ParentViewController
.....
@end
然後我們繼承它
ChildViewController.h
@interface ChildViewController : ParentViewController
....
@end
ChildClassViewController.m
@implementation ChildViewController
- (void)doSomething
{
// XCode Warning Flag on this line
NSUInteger count = [self selectedItems];
.....
}
的XCode將在註釋行設置警告標誌,並說:「實例方法‘-selectedItems’未找到(返回類型默認爲‘ID’)。
是的我知道在ObjC中沒有私人方法這樣的事情,但使用空的類別類型可以這樣做。但不知何故,它不會被子類繼承。
我通常通過將方法從ParentViewController.m移動到ParentViewController.h來修復它。這感覺很奇怪,我放棄了將方法設置爲私有的能力,因爲我需要對它進行子類化。
現在我的問題是:
爲什麼父子類找不到在其在.m文件類別聲明的那些方法呢?
有沒有辦法刪除警告標誌,但不失去保持私有方法的能力。
希望有更多經驗的人能夠幫助解釋這個令人討厭的問題。
是的這個作品。在同一個.m文件中結合父類和子類不是一個選項,因爲它們很大。將這些私有方法放在單獨的文件中很麻煩。我會接受這個答案,我不認爲會有任何其他的方式。 – 2012-03-10 02:55:39
@SamuelChandra,是的,同一個文件只是瑣事。你應該永遠不要那樣做。 – 2012-03-10 03:03:49