首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSAutoReleasePool泄漏

NSAutoReleasePool泄漏
EN

Stack Overflow用户
提问于 2011-01-05 02:39:00
回答 2查看 1.4K关注 0票数 1

谁能告诉我为什么NSAutoreleasePool会在这段代码中泄漏。我正在使用工具来检查泄漏&这段代码不知何故在泄漏。有人能给我指引正确的方向吗?我在其他地方也有完全相同的代码&它运行得很好。

代码语言:javascript
复制
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:self.url];
 [request setDelegate:self];

 NSOperationQueue *queue = self.downloadQueue;
 [queue addOperation:request];
 [request release];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-05 02:48:09

如果您围绕该代码创建一个NSAutoreleasePool,它应该会消失。如果此代码未在主线程上运行,则通常会发生这种情况。

代码语言:javascript
复制
NSAutoreleasePool* pool = [NSAutoreleasePool new];
// Your code goes here
[pool drain];

此外,请注意,如果您在NSAutoreleasePool新/排出块内循环,您将显示为泄漏,直到您遇到排出为止。这样做的结果是,如果你在循环中分配了太多的内存,你的应用程序仍然会耗尽内存。在这种情况下,您可能需要每次通过循环创建并耗尽第二个NSAutoreleasePool (或者可能每第n次通过循环以避免一些开销)。

票数 2
EN

Stack Overflow用户

发布于 2011-01-05 02:42:21

你是在辅助线程上运行这段代码吗?如果是这样的话,你有没有设置一个自动释放池?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4597121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档