使用NSNumber对象增长NSMutableArray

时间:2011-07-07 19:24:08

标签: objective-c nsmutablearray

很抱歉新手问题,但我需要一个带有一些NSNumber的NSMutableArray,在for循环中动态创建。我的代码如下所示:

for (...){
NSNumber *temp_number = [[NSNumber alloc] initWithInteger:someNSInteger];
        [target_array addObject:[temp_number copy]];
        [temp_number release];
}

这是一种正确的方法吗?它泄漏了吗?

谢谢!米格尔

1 个答案:

答案 0 :(得分:3)

是的,那是泄漏。你想要:

NSNumber *temp_number = [[NSNumber alloc] initWithInteger:someNSInteger];
    [target_array addObject:temp_number];
    [temp_number release];

所以,没有copy。逻辑是因为你使用alloc,你最终拥有temp_number。然后,将它添加到数组中,阵列可以执行所需的任何操作。您已将temp_number用于其预期目的,因此您不再希望拥有它并将其释放。

如果您要复制一份,那么会创建另一个NSNumber实例,您也拥有该实例,因此在完成后也应该发布该实例。

实际上,数组(如果它被分配并存在,而不是nil)将保留对象本身,但这是一个特定于该类的实现细节,而不是你应该依赖甚至特别感兴趣的超出了合同,表明您添加的对象以后可以在数组中找到。