1
我有一个线程,修改循环中的一个对象(这是分配和保留在调用线程中)的传递指针。如果我把指针放在自动释放池中,我有时会得到错误,因为对象在不应该释放时会被释放。我把它从autorelease池中取出,这似乎工作。但是,我担心内存泄漏,因为如果我根本不使用autorelease池,则会发生严重泄漏。我应该离开自动释放池传递的变量/对象吗?
-(void)my_thread:(NSArray*)parameters;
{
//keep this out of the autorelease pool
Object *theObject;
[[parameters objectAtIndex:2] getValue:&theObject];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//do stuff to theObject
[pool release];
}
感谢。我不一定需要释放参数。我只需要知道是否将它包含在autorelease池中。听起来像我不应该,根据你的例子。这是有道理的,如果是这样的话,我只是想确定一下。 – Synthetix 2010-09-16 04:17:24
输入时必须保留参数。如果您自动释放它或在该方法的主体内释放它完全不相关,但是您必须执行一个操作,否则会发生泄漏。 – bbum 2010-09-16 05:22:36