2011-03-09 66 views
4

類的裁判說:的UITableViewController初始化與initWithStyle

如果使用標準的init方法來初始化一個UITableViewController對象,創建於普通樣式表視圖。

我不明白,在這種行爲來自 - 我想看看我在一些代碼 或API,但

  • 的UITableViewController沒有初始化在其API

  • 怎麼可能一些基類的init知道派生類的合適的默認樣式?

感謝每一個提示

回答

8

每個對象都有一個init方法,但很多類都有一個所謂的指定的初始值設定項。這是主要的初始化器,其他的只是調用指定初始化器的簡便方法。

根據那個文件夾,在這種情況下,init方法可能看起來是這樣的:

從超
- (id)init 
{ 
    return [self initWithStyle:UITableViewStylePlain]; 
} 

方法不會出現在派生類的文檔,除非在派生類中重寫它並且有一些重要的話要說。這就是爲什麼你看不到init記錄在UITableViewController,它是從其中UITableViewController派生(通過UIScrollView - > UIView - > UIResponder - > NSObject)NSObject的一部分。

至於你的問題的第二部分:基類可以(應該)永遠不知道派生類的任何事情。需要不同默認樣式的派生類將簡單地重寫init

+0

那麼我寧願在文檔中使用init,因爲它有一些重要的東西要說(不同於NSObject的) - 而不是把它放在一些神祕的討論評論中!無論如何thanx :-) –

2

在UITableViewController.m

- (id) init 
{ 
    return [self initWithStyle:UITableViewStylePlain]; 
} 

init方法將調用指定的初始化。

+0

但是這個實現是不可用的,所以我真的更喜歡在文檔中的init ... –

+0

這解釋了爲什麼initWithStyle被神祕地稱爲UITableViewController默認初始化的結果。我同意這有點令人困惑。 – ComDubh

相關問題