0

我在我的代码中使用这些行

NSMutableArray * NewsFeedArray;
NewsFeedArray = [[[NSMutableArray alloc]init]retain];

我应该在哪里释放 this NSMutableArray,为什么要释放那个对象?在我的项目中,我在我的dealloc方法中释放对象,但这样做需要更多时间。

谁能解释一下?

4

3 回答 3

3
NewsFeedArray =[[[NSMutableArray alloc] init] retain];

这行代码实际上将您的对象的保留计数增加到 2。这可能就是您遇到对象没有在您期望的时候完全释放的原因。

于 2009-07-31T09:48:42.697 回答
0

添加对象后立即释放添加到 NewsFeedArray 的对象。将它们添加到数组中的事实使它们的保留计数增加了 1。数组“拥有”它们,当您释放数组时,其中的所有对象的保留计数都会减一(通常也会释放它们)。

于 2009-07-31T09:44:37.200 回答
0

当你开始时你需要这样的东西(可能在你的init方法中):

NSMutableArray* news = [[NSMutableArray alloc] initWithCapacity:10];

请注意,您不需要保留它。

添加东西:

RandomObject* obj = [[RandomObject alloc] init];
// set properties
[news addObject:obj];
[obj release];

您可以释放新对象,因为将其添加到数组会增加其引用计数。

最后,您将以下内容放入您的dealloc方法中:

[news release];

释放数组将自动释放它持有的每个对象。

于 2009-07-31T09:50:02.397 回答