2012-06-14 19 views
-1

我搜索关于这个问题,但无法找到任何合适的答案: 我一直在研究java很长一段时间,现在我想学习Objective-C的内存处理自定义类的对象,它是内部可变数组

这里是场景: 我有一个Objective C类,其中扩展NSObject类,该类包含的saveral字段NSString类型和CustomObject类型我创建那里属性与@property(nonatomic,retain) NSString or MyObjec吨。 我的自定义类的创建对象后,我把它的NSArray作为[myArray addObject:myObject]

现在我要问,如果我释放myArray的我一定要释放对象内部的数组内的对象和领域是什么,有些领域是太CustomObject另一类;

+0

您是否考虑过使用ARC,而不是经典的保留版本?它会让思考这种事情变得更容易。 – Daniel

+0

实际上,我想用手动释放而不是ARC –

回答

2

当您释放一个NSArray时,将释放消息发送给数组中的每个对象。如果对象的唯一引用位于数组中,则对象将调用其dealloc方法,该方法负责释放其所有属性。

+0

okz如果我只有一个参考是在NSArray中。如果我释放数组将自定义类的子字段也将释放那些子字段也是自定义对象 –

+0

是的,只要您的自定义对象在其dealloc方法释放它们(它可能应该)) – Daniel

1

我仍然在学习objc,并且我认为当你创建自定义对象时,保留计数会增加,并将其添加到数组中也会增加保留计数。所以当你释放数组内的对象时,它仍然有一个需要释放的保留计数。这只是我的想法。

+0

来解答你的答案,但是关于与该对象相关联的其他自定义对象的情况如何,因为实例变量 –

+0

就像Daniel在释放数组时的答案一样,数组中的每个对象都将接收释放消息并减去保留计数。 – TheNitram

+0

嗯,感谢我得到它 –

相关问题