问题标签 [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 投票
7 回答
87088 浏览

objective-c - NSAutoreleasePool 自动释放池是如何工作的?

据我了解,使用allocnewcopy创建的任何内容都需要手动发布。例如:

不过,我的问题是,这不是同样有效吗?:

0 投票
5 回答
4510 浏览

cocoa-touch - autorelease 什么时候真正导致 Cocoa Touch 中的释放?

autorelease我知道您在 iOS 上需要小心。我有一个方法返回alloc调用者需要的对象,所以在这种情况下——据我所知——我需要autorelease在它返回之前发送给被调用者中的对象。

这很好,但是一旦控制权返回到手机(即在我的按钮点击被处理之后),似乎自动释放池被释放了。我怀疑这是应该的,但我想知道这种情况下的最佳做法是什么。

我已经求助于从调用者发送一条retain消息,以便该对象不被释放,然后在dealloc.

这是最好的方法吗?

0 投票
1 回答
313 浏览

objective-c - GNUStep NSAutoreleasePool 不兼容

根据另一篇 Stack Overflow 帖子,该drain消息是 Apple 专用电话:

drain用替换是否安全release?我正在尝试移植一个 Objective-C 应用程序以在 Linux(目前是 Ubuntu)上运行。我应该在开始之前就放弃吗?(我已经在尝试开始NSURLConnection工作时遇到了问题)

0 投票
1 回答
704 浏览

iphone - iPhone 开发多线程,NSAutoreleasePool

我有一个简单的应用程序,它倒计时到午夜,然后一遍又一遍地播放哔哔声,并闪烁显示时间的标签。所以标签闪烁使用了一个NSTimer,而哔哔声在自己的Thread上进行,这样纯C函数(用于系统声音id完成回调)可以使用[NSThread sleepForTimeInterval:...]; 在播放警报哔声之间稍等片刻。所以我在执行过程中收到两条错误消息,说没有自动释放池,它只会泄漏。这是因为在我调用新线程的方法中,有两个 @"Strings" 用于创建系统声音 ID(文件名和扩展名)。有没有办法我不能使用自动释放池,因为这是唯一尝试使用它的两件事。谢谢。

或者我应该使用两个 NSTimers 而不是另一个线程..?

Ben Gottlieb 的回答是正确的,但是我决定改用另一个 NSTimer,因为我忘记了它是如何与你睡眠线程的时间不真正同步的,因为它需要一些时间才能真正执行代码。它使事情对称;)。

0 投票
3 回答
1030 浏览

iphone - NSAutoreleasePool 问题

我在 iphone 2.0 中使用这行代码它工作正常

当我在 iphone 3.0 中运行这行代码时,它会在日志屏幕中给出一些泄漏消息。该消息是

谁能帮我?

提前致谢....

0 投票
3 回答
2638 浏览

cocoa - NSAutorelease 内存泄漏

我在控制台中收到此错误消息:

我无法弄清楚错误是什么?

谢谢。

0 投票
1 回答
1752 浏览

c++ - 类 NSCFNumber 自动释放,没有适当的池 - 只是泄漏

我是 C++ 新手,刚刚开始使用线程处理项目。

目前我的项目涉及OpenGL和OpenCV库,在编码过程中遇到以下错误:


当前语言:自动;currently c++ 2009-12-21 14:54:49.438 3DTestApp[3210:7803] *** _NSAutoreleaseNoPool(): Object 0x10ebe0 of class NSCFNumber autoreleased with no pool in place - just leaking Stack: (0x91edff4f 0x91dec432 0x941ad394 0x94282218 0x94281b32 0x94528023 0x942813ef 0x94280dc6 0x94489ef4 0x944882ab 0x9350e13d 0x9350d57b 0x9350d3e0 0x93529e29 0x93529bce 0x935292a8 0x935290e4 0x5743e2) 杀死退出


我放了断点并意识到只有在执行以下行后才发生错误:

cvShowImage("运动追踪器", detectionMotionScreen); (这段代码在一个无限循环的线程中)

我搜索了一下,发现这个错误只发生在 Objective C 中,我没有发现与 C++ 相关的结果。

因此,我想问一下是否有人知道为什么会发生这种情况,有没有办法解决它?

编辑:我尝试添加框架 Foundation 以使用 NSAutoreleasePool,但是在编译时它会在我的代码中产生很多关于语法的错误,而实际上没有。

0 投票
1 回答
779 浏览

iphone - iPhone 应用程序在解析 XML 时冻结

每当我解析 XML 提要时,我的应用程序就会冻结。

我试过打电话给这个:

调用:

但结果我的应用程序变得非常不稳定......iPhone模拟器刚刚崩溃,没有错误警告。

0 投票
2 回答
6689 浏览

cocoa-touch - 使用 initWithObjects 将图像加载到 NSArray 会崩溃,但不会使用 NSMutableArray?

加载应用程序后,我正在将图像延迟加载到数组中。我尝试过使用 NSMutableArray 和 NSArray (一旦创建数组,我就不需要更改数组),但后者在我身上崩溃了。

对比

NSZombieEnabled = YES 告诉我 [UIImage retain] 在使用后一个代码片段时被发送到释放的实例。两个数组在我的 h 文件中都有 (nonatomic, retain) 属性。为什么 NSArray 不保留图像?

0 投票
2 回答
214 浏览

objective-c - 如何释放分配在不同 AutoReleasePool 中的对象?

我对 Objective-C 中的内存管理有疑问。假设我有一个分配对象并将对该对象的引用存储为类成员的方法。如果我第二次运行相同的函数,我需要先释放第一个对象,然后再创建一个新对象来替换它。假设函数的第一行是:

这意味着将有一个不同的自动释放池。分配对象的代码如下:

问题是程序在运行方法的最后一行时崩溃:

我究竟做错了什么 ?我怎样才能解决这个问题 ?

问候
艾伦