我有这个:
-(NSMutableArray*)setManch:(NSMutableArray*)data
{
NSMutableArray *manch=[data mutableCopy] ;
// some calculations on manch
return manch;
}
如果我尝试这样做:
NSMutableArray *manch=[[data mutableCopy] autorelease] ;
我崩溃了。
但是,我必须以某种方式release
这个副本,因为我一次又一次地调用这个函数。我该怎么做?
for(int k=0;k< count;k=k+2)
{
if(k==count-1)
[manch addObject:[NSNumber numberWithInt:![[manch objectAtIndex:k] integerValue] ] ];
else
[manch insertObject:[NSNumber numberWithInt:![[manch objectAtIndex:k] integerValue] ] atIndex:k+1 ];
}
答案 0 :(得分:0)
我建议使用ARC。
但无论如何。自动释放在这里是正确的。所以你的错误可能就在其他地方。错误的确切含义是什么?
问题可能是阵列中的数据。简单的复制调用不会进行深层复制。因此,如果您的对象仅存在于第一个数组中,则只要该数组被释放,它们就会被释放。调试数据:查看该方法调用之前和之后存在的内容。
你应该读一下&amp;理解ios上的内存管理:
实践管理,尤其是“避免导致您正在使用的对象重新分配” http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html#//apple_ref/doc/uid/20000043-1000922