我安裝了Xcode 8.0 beta(8S128d)。現在我有一些警告與消息:調用超類的awakeFromNib
Method possibly missing a [super awakeFromNib] call
在所有awakeFromNib
方法。 在這種情況下,我需要調用這個超類的方法?
我安裝了Xcode 8.0 beta(8S128d)。現在我有一些警告與消息:調用超類的awakeFromNib
Method possibly missing a [super awakeFromNib] call
在所有awakeFromNib
方法。 在這種情況下,我需要調用這個超類的方法?
按Apple:
你必須調用超級實現awakeFromNib的給父母 類執行任何額外的初始化他們 需要的機會。儘管此方法的默認實現沒有任何功能,但許多UIKit類都提供了非空實現。您可能在您自己的 awakeFromNib方法的任何時候調用超級實現。
的Xcode 8之前,有這個沒有嚴格的編譯器的要求,howeever蘋果已與Xcode8改變這一點,編譯器將其視爲錯誤,如果調用(在SWIFT或super.awakeFromNib()
)[super awakeFromNib]
在awakeFromNib丟失。
如此迅速的版本將是這個樣子:
func awakeFromNib() {
super.awakeFromNib()
... your magical code ...
}
謝謝!與文檔鏈接的最佳答案! –
這個命令不重要嗎?任何人爲什麼想在最後完成'[super awakeFromNib]'而不是在你自己實現它的開始? – micnguyen
@micnguyen值得注意的是,通過覆蓋超級方法來擴展超級方法的行爲。所以考慮到這一點,super需要一個機會來首先實現它自己的事情,否則你的子類可能會做一些已經完成的事情。我已經看到開發者在最後稱超級,但這不是一個好的做法,有點超出了超級調用的目的。 – PostCodeism
你實際上覆蓋了代碼中的'awakeFromNib'方法。 NSView或任何你的superview也實現了awakeFromNib - 在你執行任何代碼之前,你應該在你的實現開始時調用super,以確保NSView能夠事先正確地設置它自己。
- (void)awakeFromNib
{
[super awakeFromNib];
... your code ...
}
的可能的複製[?我應該叫\ [超級awakeFromNib \](http://stackoverflow.com/questions/3989665/should-i -call-super-awakefromnib) – new2ios