我认为我的程序在这个循环的最后一行泄漏内存,但我不明白为什么它应该。我不是在呼叫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];
}
答案 0 :(得分:1)
此处的代码没有任何泄漏。
你必须考虑所有权。您在此处不拥有zero
,因为它未从alloc
或new
返回。由于您不拥有它,因此您不需要release
它。
您的想法是insertObject:
正在增加retainCount
,这是真的。当您将zero
插入数组时,randomUsed
和alphaKeys
会保留您的零对象。在这种情况下,它是拥有它的数组,而不是你。 他们需要释放它,而不是你。
如果有泄漏,那就是泄漏的数组本身,而不是你的zero
对象。