问题标签 [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.
objective-c - NSAutoreleasePool 自动释放池是如何工作的?
据我了解,使用alloc、new或copy创建的任何内容都需要手动发布。例如:
不过,我的问题是,这不是同样有效吗?:
cocoa-touch - autorelease 什么时候真正导致 Cocoa Touch 中的释放?
autorelease
我知道您在 iOS 上需要小心。我有一个方法返回alloc
调用者需要的对象,所以在这种情况下——据我所知——我需要autorelease
在它返回之前发送给被调用者中的对象。
这很好,但是一旦控制权返回到手机(即在我的按钮点击被处理之后),似乎自动释放池被释放了。我怀疑这是应该的,但我想知道这种情况下的最佳做法是什么。
我已经求助于从调用者发送一条retain
消息,以便该对象不被释放,然后在dealloc
.
这是最好的方法吗?
objective-c - GNUStep NSAutoreleasePool 不兼容
根据另一篇 Stack Overflow 帖子,该drain
消息是 Apple 专用电话:
drain
用替换是否安全release
?我正在尝试移植一个 Objective-C 应用程序以在 Linux(目前是 Ubuntu)上运行。我应该在开始之前就放弃吗?(我已经在尝试开始NSURLConnection
工作时遇到了问题)
iphone - iPhone 开发多线程,NSAutoreleasePool
我有一个简单的应用程序,它倒计时到午夜,然后一遍又一遍地播放哔哔声,并闪烁显示时间的标签。所以标签闪烁使用了一个NSTimer,而哔哔声在自己的Thread上进行,这样纯C函数(用于系统声音id完成回调)可以使用[NSThread sleepForTimeInterval:...]; 在播放警报哔声之间稍等片刻。所以我在执行过程中收到两条错误消息,说没有自动释放池,它只会泄漏。这是因为在我调用新线程的方法中,有两个 @"Strings" 用于创建系统声音 ID(文件名和扩展名)。有没有办法我不能使用自动释放池,因为这是唯一尝试使用它的两件事。谢谢。
或者我应该使用两个 NSTimers 而不是另一个线程..?
Ben Gottlieb 的回答是正确的,但是我决定改用另一个 NSTimer,因为我忘记了它是如何与你睡眠线程的时间不真正同步的,因为它需要一些时间才能真正执行代码。它使事情对称;)。
iphone - NSAutoreleasePool 问题
我在 iphone 2.0 中使用这行代码它工作正常
当我在 iphone 3.0 中运行这行代码时,它会在日志屏幕中给出一些泄漏消息。该消息是
谁能帮我?
提前致谢....
cocoa - NSAutorelease 内存泄漏
我在控制台中收到此错误消息:
我无法弄清楚错误是什么?
谢谢。
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,但是在编译时它会在我的代码中产生很多关于语法的错误,而实际上没有。
iphone - iPhone 应用程序在解析 XML 时冻结
每当我解析 XML 提要时,我的应用程序就会冻结。
我试过打电话给这个:
调用:
但结果我的应用程序变得非常不稳定......iPhone模拟器刚刚崩溃,没有错误警告。
cocoa-touch - 使用 initWithObjects 将图像加载到 NSArray 会崩溃,但不会使用 NSMutableArray?
加载应用程序后,我正在将图像延迟加载到数组中。我尝试过使用 NSMutableArray 和 NSArray (一旦创建数组,我就不需要更改数组),但后者在我身上崩溃了。
对比
NSZombieEnabled = YES 告诉我 [UIImage retain] 在使用后一个代码片段时被发送到释放的实例。两个数组在我的 h 文件中都有 (nonatomic, retain) 属性。为什么 NSArray 不保留图像?
objective-c - 如何释放分配在不同 AutoReleasePool 中的对象?
我对 Objective-C 中的内存管理有疑问。假设我有一个分配对象并将对该对象的引用存储为类成员的方法。如果我第二次运行相同的函数,我需要先释放第一个对象,然后再创建一个新对象来替换它。假设函数的第一行是:
这意味着将有一个不同的自动释放池。分配对象的代码如下:
问题是程序在运行方法的最后一行时崩溃:
我究竟做错了什么 ?我怎样才能解决这个问题 ?
问候
艾伦