很抱歉新手问题,但我需要一个带有一些NSNumber的NSMutableArray,在for循环中动态创建。我的代码如下所示:
for (...){
NSNumber *temp_number = [[NSNumber alloc] initWithInteger:someNSInteger];
[target_array addObject:[temp_number copy]];
[temp_number release];
}
这是一种正确的方法吗?它泄漏了吗?
谢谢!米格尔
答案 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)将保留对象本身,但这是一个特定于该类的实现细节,而不是你应该依赖甚至特别感兴趣的超出了合同,表明您添加的对象以后可以在数组中找到。