问题标签 [nsautoreleasepool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3387 浏览

iphone - 运行循环结束——自动释放池恢复

据我了解,一旦释放了自动释放池,就会清除自动释放的对象。现在,自动释放池将在运行循环结束时释放。

我的问题是,如果在我的类中我没有创建自定义自动释放池并对该类中的某些对象调用 autorelease 方法,那么这些对象将在什么时候被恢复?“运行循环的结束”是否意味着“应用程序的结束”?

0 投票
1 回答
429 浏览

iphone - 内存泄漏 NSAutoreleasePool

可能重复:
内存泄漏 NSAutoreleasePool

你好,

有人可以告诉我如何解决此泄漏(仪器显示此方法中的泄漏):

谢谢。

0 投票
2 回答
1301 浏览

ios4 - NSAutoreleaseNoPool():NSConcreteMutableData 类的对象 0x66ad9d0 自动释放,没有适当的池 - 只是泄漏

我正在尝试在我的项目中执行线程操作。事情进展顺利,但我正在NSAutoreleaseNoPool(): Object 0x66ad9d0 of class NSConcreteMutableData autoreleased with no pool in place - just leaking关注我的 NSLOG。

我的代码是..

我的日志消息是:

等等..

我错过了什么..经过大量谷歌搜索后,我才发现创建一个新池..但没有奏效..

提前致谢..

0 投票
2 回答
1061 浏览

iphone - 更改 navigationItem 的 barButtonItem

我有一个 UIViewController。我使用 navigationItem 的 rightBarButtonItem 作为“重新加载按钮”。当按下重新加载按钮时,我使用 leftBarButtonItem 在应用程序处理要重新加载的数据时显示活动指示器。到这里为止一切都很好。
这是一些代码:

现在我被要求稍微改变逻辑。
rightBarButtonItem 保持原样。leftBarButtonItem 仍然在那里显示活动指示器,但是当没有处理时,它应该显示另一个按钮,当按下时将显示一个新视图(用于某些信息)。
所以我做了这些改变:

虽然它似乎正在工作(信息按钮在那里,当我按下“重新加载”时,activityIndi​​cator 会占据它的位置,直到处理完成),我在调试器控制台中得到以下信息:

我究竟做错了什么?我希望有人可以提供帮助...
在此先感谢。

0 投票
2 回答
310 浏览

iphone - 自动释放对象的生命周期

这里字符串 str 的生命周期是多少。str的retainCount什么时候会变为零。我知道它的保留计数将在运行循环结束时变为零。runloop的结束是否意味着调用returnString的函数的结束。如果不是 runloop 是什么意思,runloop 的结尾是什么意思。

这种释放方式是否正确?

0 投票
1 回答
97 浏览

iphone - AutoreleaseFreedObject 问题

应用程序窗口第一次加载并给出此警告:

*** __NSAutoreleaseFreedObject(): release of previously deallocated object (0x583e880) ignored

应用程序第二次崩溃并给出 EXC_BAD_ACCESS。我哪里错了?

PS我试图启用僵尸,但它给出了同样的错误......

0 投票
1 回答
631 浏览

objective-c - 目标c线程中的线程变量生命周期


我有一个 NSOperation 在我使用的 -main 方法中[NSThread detachNewThreadSelector:@selector(aMethod:) toTarget:self withObject:anArgument];

aObject(我的 NSOperation 子类的实例变量)是对在 -main 方法内返回的自动释放数组的对象的弱引用...

我知道 NSThread 的 detachNewThreadSelector 方法保留self和 withObject: anArgument,但是 aObject 会发生什么?是否确定在执行分离线程(aMethod:) 期间会存在?自我被保留detachNewThreadSelector,这是否意味着-主线程的池将被延迟释放,因为它被保留,因此clients将存在,因此aObject将存在?
或者-main(NSOperation)线程将在-aMethod(NSThread)完成之前完成执行并释放,所以在aObject那里使用不安全?

真正的问题是:当从线程内部调用[NSThread detachNewThreadSelector:@selector(aMethod:) ...toTarget:self ...]时,最后一个线程是否被保留,其自动释放的实例(clients数组)可以安全地在aMethod( self->aObject) 中使用(让我们说通过弱引用)?

0 投票
1 回答
262 浏览

iphone - NSAutoreleasepool 泄漏 - 不明白为什么?

我有这个代码:

它会产生以下错误:

2011-06-17 03:10:30.768 CHARLIE[2456:6c03] * __NSAutoreleaseNoPool(): __NSArrayI 类的对象 0x703d0f0 自动释放,没有适当的池 - 只是泄漏

我不明白为什么它会泄漏,有​​人可以解释如何解决这个问题吗?

非常感谢,

杰克

0 投票
1 回答
14121 浏览

objective-c - 为什么使用自动释放池?

我知道在 main 方法中创建了一个自动释放池,所有收到自动释放消息的对象都存储在这个池中,并在池耗尽时被释放。

但人们总是说要避免自动释放对象以避免内存泄漏,从而避免应用程序崩溃。

那么为什么以及在什么情况下我们应该使用 autoreleasepool 呢?

Apple 文档建议我们在使用线程时需要使用它们,因此在线程开始时我们需要创建一个自动释放池,并在线程结束时将其排出,但是如果我们没有完全创建自动释放对象怎么办那么在这种情况下,线程也有必要在线程的开头创建一个自动释放池。

请清除我的困惑。谢谢。

0 投票
1 回答
131 浏览

objective-c - 将自动释放的对象更改为非自动

有没有办法将自动释放的对象更改为非自动释放的对象?

NSCoder 的 decodeObjectForKey 返回一个自动释放的对象,它与我的应用程序中的几个内存系统混淆。如何将其返回值更改为非自动释放对象?

我知道我可以在它上面运行保留,但如果我释放它,它仍然会保持自动释放。然而,我想自己管理内存。