如何在NSMutableArray中释放对象?

时间:2010-12-16 10:14:45

标签: objective-c object nsstring nsmutablearray release


我有这个Mutable Array:

NSMutableArray *points = [pgroute getPoints:self];

其中[getPoint...]执行此操作:

{
 NSMutableArray *normPoints = [[NSMutableArray alloc] init];
 [normPoints addObject:@""];
 [...]
 return normPoints;
}

现在,
点是一个对象数组,对吗?

以这种方式释放* points数组是否正确?

for (int i = 0; i < [points count]; i++) {
    [(NSString *)[points objectAtIndex:i] release];
}
[points release];

还是另一种正确的方法?

Xcode编译器,RUN_CLANG_STATIC_ANALYZER告诉我有一个

  

引用的减少不正确   不拥有的对象的计数   此时由来电者

我该如何解决这个问题?

感谢,
阿尔贝托。

1 个答案:

答案 0 :(得分:2)

如果要清空数组,只需执行以下操作:

[points removeAllObjects];

如果你想发布数组,你甚至可以跳过它并立即发布它:

[points release];

数组将自己处理释放对象。如果你只是将NSString文字(@"using this notation")添加到数组中,那么它们不需要被释放,因为它们是常量。那当然是一个不同的故事;我的观点是,NSMutableArray将处理在必要时发布的内容。