iphone - NSAutoReleasePool泄漏

标签 iphone ipad ios asihttprequest nsautoreleasepool

谁能告诉我为什么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以避免某些开销。

关于iphone - NSAutoReleasePool泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597121/

相关文章:

ios - 如何配置我的服务器以提供与 MPMoviePlayerViewController 一起播放的视频文件?

iphone - iOS 企业内部部署需要设备 ID?

iphone - 关闭 MFMailComposeViewController 会导致 EXC_BAD_ACCESS

iphone - 旋转 View 不会旋转音量按钮图标

iphone - 在我自己的类中重写保留和释放方法

iphone - 编写一个 "No Photos In Albums"屏幕

iphone - 如果我的应用崩溃了,我该如何保存在userdefaults中

objective-c - 如何在 iPad 应用程序中添加电子邮件功能?

iOS 11 自定义 UIAlertView 渲染不正常

objective-c - 将会计期间转换为日历期间的算法