如何释放在Objective C中的for循环内创建的数组?

War*_*ior 0 iphone memory-leaks memory-management

我在for循环中创建了一个数组,但我无法释放它.它显示内存泄漏.这是我的代码:

for(int i = 0; i < [magArr count]; i++)
{
   Magazine *magObj = [magArr objectAtIndex:i];
   NSMutableArray *myArray = [data readEditions:[magObj.magazineID intValue]:0];//returns a array
}
[myArray release]; // memory leaks (retain count to -1)
Run Code Online (Sandbox Code Playgroud)

如果我也使用自动释放,它显示内存泄漏.如何解决这个漏洞?

Jac*_*kin 6

如果要返回的数组readEditions未自动释放,则会违反对象所有权策略.

您应该在循环内释放对象,因为它在循环的每次迭代后都会泄漏,如果readEditions返回一个保留计数> 0的对象.

您应该返回一个自动释放的对象,readEditions因为方法名称不包含alloc,newcopy.

然后,如果您愿意,您可以retain使用自动释放的对象来保持它.

以下是readEditions返回自动释放对象时循环外观的示例:

for(int i = 0; i < [magArr count]; i++)
{
   Magazine *magObj = [magArr objectAtIndex:i];
   NSMutableArray *myArray = [[data readEditions:[magObj.magazineID intValue]:0] retain];
   //do something with myArray...
   [myArray release];
}
Run Code Online (Sandbox Code Playgroud)