2011-05-04 81 views
1

我想知道,在這種情況下類層次調用父類的問題

MySuperClass : UIViewController 

MYSubClass : MySuperClass 

MySuperClass缺乏方法會發生什麼,viewWillAppear中

我的問題是:如果MySubClass有以下方法

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

是代碼簡單地忽略(不會執行)或viewWillAppear在UIViewController將被稱爲?

只是想知道。

回答

3

它與普通方法調用的工作方式類似。當你調用super時,運行時會通過超類鏈直到找到一個實現請求的方法。如果沒有找到,它將調用轉發方法,如果方法未被轉發,它將調用doesNotRecognizeSelector:。所以,是的,viewWillAppear將在UIViewController類上被調用。

0

假設你有:

MySubClass *mySubController = [[MySubClass alloc] initWithNibNamed:nil bundle:nil]; 

如果你做的東西mySubController將導致其觀點出現,如將其推送到導航控制器的堆棧,然後MySubClass'實施-viewWillAppear的將被調用。就目前而言,該實現只是調用super的實現。由於MySuperClass不會覆蓋-viewWillAppear,因此將調用UIViewController的實現。