我在我的代码中使用这些行
NSMutableArray * NewsFeedArray;
NewsFeedArray = [[[NSMutableArray alloc]init]retain];
我应该在哪里释放 this NSMutableArray
,为什么要释放那个对象?在我的项目中,我在我的dealloc
方法中释放对象,但这样做需要更多时间。
谁能解释一下?
我在我的代码中使用这些行
NSMutableArray * NewsFeedArray;
NewsFeedArray = [[[NSMutableArray alloc]init]retain];
我应该在哪里释放 this NSMutableArray
,为什么要释放那个对象?在我的项目中,我在我的dealloc
方法中释放对象,但这样做需要更多时间。
谁能解释一下?
NewsFeedArray =[[[NSMutableArray alloc] init] retain];
这行代码实际上将您的对象的保留计数增加到 2。这可能就是您遇到对象没有在您期望的时候完全释放的原因。
添加对象后立即释放添加到 NewsFeedArray 的对象。将它们添加到数组中的事实使它们的保留计数增加了 1。数组“拥有”它们,当您释放数组时,其中的所有对象的保留计数都会减一(通常也会释放它们)。
当你开始时你需要这样的东西(可能在你的init
方法中):
NSMutableArray* news = [[NSMutableArray alloc] initWithCapacity:10];
请注意,您不需要保留它。
添加东西:
RandomObject* obj = [[RandomObject alloc] init];
// set properties
[news addObject:obj];
[obj release];
您可以释放新对象,因为将其添加到数组会增加其引用计数。
最后,您将以下内容放入您的dealloc
方法中:
[news release];
释放数组将自动释放它持有的每个对象。