類的裁判說:的UITableViewController初始化與initWithStyle
如果使用標準的init方法來初始化一個UITableViewController對象,創建於普通樣式表視圖。
我不明白,在這種行爲來自 - 我想看看我在一些代碼 或API,但
的UITableViewController沒有初始化在其API
怎麼可能一些基類的init知道派生類的合適的默認樣式?
感謝每一個提示
類的裁判說:的UITableViewController初始化與initWithStyle
如果使用標準的init方法來初始化一個UITableViewController對象,創建於普通樣式表視圖。
我不明白,在這種行爲來自 - 我想看看我在一些代碼 或API,但
的UITableViewController沒有初始化在其API
怎麼可能一些基類的init知道派生類的合適的默認樣式?
感謝每一個提示
每個對象都有一個init
方法,但很多類都有一個所謂的指定的初始值設定項。這是主要的初始化器,其他的只是調用指定初始化器的簡便方法。
根據那個文件夾,在這種情況下,init
方法可能看起來是這樣的:
- (id)init
{
return [self initWithStyle:UITableViewStylePlain];
}
方法不會出現在派生類的文檔,除非在派生類中重寫它並且有一些重要的話要說。這就是爲什麼你看不到init
記錄在UITableViewController
,它是從其中UITableViewController派生(通過UIScrollView - > UIView - > UIResponder - > NSObject)NSObject
的一部分。
至於你的問題的第二部分:基類可以(應該)永遠不知道派生類的任何事情。需要不同默認樣式的派生類將簡單地重寫init
。
在UITableViewController.m
- (id) init
{
return [self initWithStyle:UITableViewStylePlain];
}
的init
方法將調用指定的初始化。
但是這個實現是不可用的,所以我真的更喜歡在文檔中的init ... –
這解釋了爲什麼initWithStyle被神祕地稱爲UITableViewController默認初始化的結果。我同意這有點令人困惑。 – ComDubh
那麼我寧願在文檔中使用init,因爲它有一些重要的東西要說(不同於NSObject的) - 而不是把它放在一些神祕的討論評論中!無論如何thanx :-) –