谁能告诉我为什么NSAutoreleasePool在此代码中泄漏。我正在使用仪器检查泄漏,并且此代码以某种方式泄漏。谁能引导我朝正确的方向前进。我在其他地方有完全相同的代码,并且运行良好。
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:self.url];
[request setDelegate:self];
NSOperationQueue *queue = self.downloadQueue;
[queue addOperation:request];
[request release];
最佳答案
如果您围绕该代码创建一个NSAutoreleasePool,它将消失。如果此代码不在主线程上运行,通常会发生这种情况。
NSAutoreleasePool* pool = [NSAutoreleasePool new];
// Your code goes here
[pool drain];
另外,请注意,如果要在NSAutoreleasePool的new / drain块中循环,则您似乎会泄漏,直到遇到麻烦为止。这样做的结果是,如果您在循环内分配了过多的内存,则您的应用程序仍会耗尽内存。在这种情况下,您可能需要在每次循环中(或可能在循环中每n次)创建和消耗另一个NSAutoreleasePool以避免某些开销。