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)
如果我也使用自动释放,它显示内存泄漏.如何解决这个漏洞?
如果要返回的数组readEditions未自动释放,则会违反对象所有权策略.
您应该在循环内释放对象,因为它在循环的每次迭代后都会泄漏,如果readEditions返回一个保留计数> 0的对象.
您应该返回一个自动释放的对象,readEditions因为方法名称不包含alloc,new或copy.
然后,如果您愿意,您可以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)