2013-10-21 102 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,我明白了。我认为当初始化子对象时,父对象也会启动。 –