首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSAutoreleasePool问题

NSAutoreleasePool问题
EN

Stack Overflow用户
提问于 2009-10-13 07:26:21
回答 3查看 1K关注 0票数 0

我在iPhone2.0中使用这行代码,它工作得很好

代码语言:javascript
复制
pool=[[NSAutoreleasePool alloc]init];

[pool release];

当我在iPhone3.0中运行这行代码时,它在日志屏幕中给出了一些泄漏消息。这条信息是

代码语言:javascript
复制
2009-10-13 03:26:31.841 Spectrum[3946:4c2b] *** _NSAutoreleaseNoPool(): Object 0xd819d0 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x305a2e6f 0x30504682 0x52c14d 0x536f67 0x3058deff 0xb049 0xa554 0x3050a79d 0x3050a338 0x97181155 0x97181012)

有谁可以帮我?

提前感谢....

EN

回答 3

Stack Overflow用户

发布于 2009-10-13 08:26:19

您的池分配和发布代码看起来很好。然而,错误消息表明自动释放分配的内容超出了自动释放池的范围。在使用辅助线程、使用某些特殊的加载方法以及初始化全局变量时,经常会发生这种情况。

一旦你使用isolate the leaking bit of code,你可以尝试用另一组NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];[pool release];来包装它。

票数 1
EN

Stack Overflow用户

发布于 2009-10-13 08:27:38

当对象被发送到自动释放作用域之外的autorelease消息时,就会出现该消息。在_NSAutoreleaseNoPool上放置一个断点,并检查堆栈以查看需要添加池的位置。

票数 1
EN

Stack Overflow用户

发布于 2009-10-13 08:28:57

在代码中寻找生成自动释放对象的任何位置,而不是在主run循环中的另一个线程中。

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

https://stackoverflow.com/questions/1558678

复制
相关文章

相似问题

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