2013-10-21 95 views
1

在我的應用程序中,我按照需求使用了2-3級繼承,所以我想問一下,在iOS中使用如此多的繼承級別是一個好主意,其中內存是一個很大的限制,影響性能和內存,因爲如果我分配1個對象實際上它會分配3個對象,包括基地?多級繼承問題

+0

只是想澄清,你是問如果一個類的子類'A'子類'B'子類'C'如果實例化'A'會爲'B'和'C'分配單獨的對象嗎? – BergQuester

+0

不是,它不是。只有'C(你分配和初始化的對象)'對象將被創建。 –

+0

@Nuzhant zari如果a(b(c))是繼承結構意味着爲c分配內存,u只會調用b的init方法,b將調用init方法。我不知道爲什麼你需要3分配 –

回答

0

假設你有一個類層次結構如下,其中類權是那些到左的子類:

NSObject->Subclass1->Subclass2 

如果然後實例Subclass2

Subclass2 *instance = [[Subclass2 alloc] init]; 

只有一個Subclass2對象將被創建。未創建單獨的對象Subclass1NSObject。因爲Subclass2繼承了兩個超類的所有ivars,所以它將有足夠的RAM分配來存儲來自Subclas1和NSObject的ivars。

如果你看看CocoaTouch框架,有許多對象在它們和NSObject之間有幾個超類。

當考慮RAM的使用情況時,子類的超類數量比ivars的數量和大小更重要,以及創建的單個對象的數量。

+0

謝謝@BergQuester,我明白了。我認爲當初始化子對象時,父對象也會啓動。 –