numberWithInt的内存泄漏?

时间:2011-06-15 16:56:29

标签: iphone objective-c ipad

我认为我的程序在这个循环的最后一行泄漏内存,但我不明白为什么它应该。我不是在呼叫alloc。有谁能解释一下?我知道这可能是一个非常明显的答案,但我刚刚开始使用目标C.是否只是numberWithInt调用增加了+1保留或什么?感谢

for (int k=0; k<=27; k++) {
    NSNumber *zero= [NSNumber numberWithInt:0];
    [randomUsed insertObject:zero atIndex:k];
    [alphaKeys insertObject:zero atIndex:k];
}

1 个答案:

答案 0 :(得分:1)

此处的代码没有任何泄漏。

你必须考虑所有权。您在此处不拥有zero,因为它未从allocnew返回。由于您不拥有它,因此您不需要release它。

您的想法是insertObject:正在增加retainCount,这是真的。当您将zero插入数组时,randomUsedalphaKeys会保留您的零对象。在这种情况下,它是拥有它的数组,而不是你。 他们需要释放它,而不是你。

如果有泄漏,那就是泄漏的数组本身,而不是你的zero对象。

请查看cocoa memory management guide