我在我的代码中使用这些行
NSMutableArray * NewsFeedArray;
NewsFeedArray = [[[NSMutableArray alloc]init]retain];
我应该在哪里发布此NSMutableArray
,为什么我要发布该对象?在我的项目中,我使用dealloc
方法释放对象,但这需要更多时间。
任何人都能解释一下吗?
答案 0 :(得分:3)
NewsFeedArray =[[[NSMutableArray alloc] init] retain];
这行代码实际上会将对象的保留计数增加到2,这可能就是为什么你遇到的对象没有被完全释放的原因。
答案 1 :(得分:0)
添加后直接释放添加到NewsFeedArray的对象。将它们添加到数组中的事实使它们的保留计数增加1。数组'拥有'它们,当你释放数组时,其中的所有对象的保留计数都会减少一个(通常也会释放它们)。
答案 2 :(得分:0)
当你开始时(可能在init
方法中)你需要这样的东西:
NSMutableArray* news = [[NSMutableArray alloc] initWithCapacity:10];
请注意,您无需保留它。
添加内容:
RandomObject* obj = [[RandomObject alloc] init];
// set properties
[news addObject:obj];
[obj release];
您可以释放新对象,因为将其添加到数组会增加其引用次数。
最后,您将以下内容放在dealloc
方法中:
[news release];
释放数组将自动释放它所拥有的每个对象。