2010-07-22 188 views
0

是否有可能選擇一個類的超級(最好是在alloc或init方法),所以我的類繼承其他的東西?我可以改變班級的超級班嗎?

+1

因此,你有一個沃爾沃(汽車),突然決定,它想要是大象(動物)? :) – willcodejavaforfood 2010-07-22 13:11:05

+0

是的。究竟。你讓它聽起來不可能...... – Chris 2010-07-22 13:12:37

+0

除非你對Objective-C和Cocoa內部有非常非常好的理解,否則你不應該搞砸alloc 你爲什麼要改變類? – Maz 2010-07-22 13:13:58

回答

3

您可以通過創建所需目標類的實例並重置self來實現-init。但是,如果你這樣做,一定要發送一個-release消息到以前的實例。

0

不,你不能。 :是的,你可以。

類(!)是一個相對靜態的東西。它與其超級「硬連線」。這很重要,因爲必須有一些東西,知道如​​何處理分配的內存和其他東西。

不同的是一個實例。你通過「請求」它的類來獲得某個類的實例。 (並且,通常,在得到一個請求後進行初始化等等。)

此時通常的行爲可能會「破壞」。但是,正如我所想,這對初學者沒有任何作用,你應該在做這樣的事情時有經驗! 爲什麼?閱讀這些內容,蘋果就是這樣說的。而且,即使蘋果也這樣做!看看NSNumber的類集羣:Cocoa Fundamentals Guide(不能發佈超過這個,但你肯定會找到NSNumber - 文檔沒有我的幫助。)