-(void)viewwillAppear
{
[super viewwillAppear:animated];
}
撥打[super viewwillAppear:animated]
是什麼意思,如果我們不打電話,會發生什麼?叫superview的viewwillappear是什麼意思?
-(void)viewwillAppear
{
[super viewwillAppear:animated];
}
撥打[super viewwillAppear:animated]
是什麼意思,如果我們不打電話,會發生什麼?叫superview的viewwillappear是什麼意思?
通過使用super
您正在調用方法的基類版本。您會在init
,dealloc
,viewDidLoad
等方法中看到類似的呼叫。原因是在基類的實現中可能會執行一些重要的事情,否則派生類將無法正常工作。當您重寫派生類中的方法時,您需要使用super
撥打基本版本。
當你知道你不需要基類所執行的任務時,換句話說你完全覆蓋了,唯一不會調用基類的方法的方法是使用super
。這不是viewWillAppear:animated
或viewDidLoad
等情況。所以我們總是在這些情況下稱爲超級。
的reference明確指出
這種方法被稱爲前 接收機的觀點是關於要顯示 屏幕上和之前的任何 動畫被配置用於示出 視圖。您可以覆蓋此方法 以執行與呈現視圖關聯的定製任務 。例如,您可以使用此方法將 欄的方向或樣式更改爲 欄,以與方向 或所呈現視圖的樣式相協調。 如果您重寫此方法,則必須在您的 實施中的某個時間點呼叫超級呼叫 。
蘋果的viewWillAppear中的文件:只是說:
如果重寫此方法,您必須在您執行某些時候調用超。
如果你不叫它,它可能會導致一些意想不到的行爲。請注意,「在某個時刻」意味着您不必先打電話。
如果沒有超級調用,只有您自己的視圖控制器實現中的自定義功能會被執行。不會執行繼承層次更高的任何功能。即viewwillAppear:動畫:它位於UIViewController中,implimentation不會被執行。 – Sabobin 2011-04-12 08:54:35
如果一直沒有調用super,那麼超類方法將永遠不會被調用;我認爲這很明顯。然而,問題是超級的viewWillAppear的實現是否足夠重要,以至於它保證了超級的呼叫。我認爲答案有時是有的,有時並非如此。例如,如果您繼承UINavigationController而不是UIViewController,則它可能很重要。爲了安全起見,請始終使用它。 – vakio 2011-04-12 09:27:11
super!= superview – pt2ph8 2011-04-12 08:58:01