问题标签 [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 - iOS 自动发布,没有适当的池 - 但我正在创建 ARP!
因此,我正在使用 [NSThread detachNewThreadSelector] 来生成一个新线程,并且在控制台中出现“autoreleased with no pool in place”错误。我知道如果您未能创建自动释放池,就会发生这种情况,但问题是,我正在创建一个。我在同一个应用程序的其他部分使用了类似的代码,并且没有收到这些错误。
以下是相关代码:
现在,在 loadImageFromURL 中有更多代码实际上可以完成工作(从远程服务器加载图像) - 但是没有该代码问题就表现出来了,所以我已经删除了它(只是为了让你不认为我有毫无意义的线程,什么都不做!)。我只留下了一行代码来演示这个问题——它创建了一个自动释放的 NSNumber 对象。
当这段代码运行时,它会向控制台报告:
__NSAutoreleaseNoPool(): Object 0x535c0e0 of class NSCFNumber autoreleased with no pool in place - just leaking
当然,真实代码会创建许多其他 AR 对象,并且所有这些对象也会被报告。
将不胜感激任何可能有帮助的提示或指示!
谢谢!
cocoa-touch - UIImage imageWithData泄漏(GCD)
嗨,我收到来自 Instrument 的报告泄漏,代码如下。
Leaks 报告我的 image = [UIImage imageWithData:imageData] 泄漏,有什么想法吗?对于自动释放的 UIImage 对象,我需要一个 NSAutoreleasePool 吗?
顺便说一句,如果有关系,我声明了 __block UIImage *image = nil; 上面是因为我在输入上面的代码之前检查了 ImageCache 中的图像。
macos - OSX 上的 SDL + OpenGL:NSAutoreleaseNoPool()
我正在使用 OpenGL 和 SDL 编写一些跨平台代码,但在 Mac OSX 上立即遇到了问题。
作为参考,这里是 GitHub 上的代码库:https ://github.com/GrooveStomp/platformer
我还将我看到的错误推送到同一个仓库:https ://github.com/GrooveStomp/platformer/blob/master/errors.txt
现在,从我所做的阅读来看,似乎 SDL 只是简单地包装了 Mac OSX 的 Objective-C Cocoa 层,我需要声明自己的 NSAutoreleasePool 来包装我的整个程序。那是对的吗?
我刚刚看到这个链接: http: //sourceforge.net/apps/wordpress/paintown/2010/12/26/sdl-and-osx/,作者从源代码安装并且没有问题。我使用 Homebrew 安装,我认为这相当于作者的步骤 #3,因为我必须在构建时指定“-framework OpenGL”。
[编辑]
因此,事实证明应该通过以下三个步骤来处理 NSAutoreleaseNoPool() 问题:
- main() 应该有这个签名: int main(int argc, char * argv[])
- #include <SDL.h> 在 main() 所在的源文件中。
- 与 -lSDLmain 链接
结果是 SDL 将使用 NSAutoreleasePool 和我的 main 包装它自己的 main()。但是,当我这样做时,我会收到此处显示的错误:
https://github.com/GrooveStomp/platformer/blob/master/make_errors.txt
iphone - 如果我不创建自动释放对象,是否需要自动释放池?
我的意思是,如果我绝对确定我没有创建任何自动释放的对象,那么当然不会。我真正关心的是引擎盖下是否还有其他我不明白的地方。我有一个调用函数的后台线程。我必须始终创建一个自动释放池吗?
objective-c - nsautoreleasepool 范围内的 return 语句
可以说我有以下情况:
以这种方式从泳池街区内返回是否正确?
iphone - iOS detachNewThreadSelector 泄漏
我有一个 UIScrollView,我正在加载一些图像。有时我会对图像应用效果,并且需要一些时间来进行预加载,所以我决定使用 detachNewThreadSelector 在不同的线程上执行此操作。为此,我正在使用 gitHub 上的 KTPhotoBrowser。
所以基本上,我有这样的功能。
我称之为使用
当我运行它时,它似乎正在泄漏。我开始怀疑是否应该在 loadPhoto 方法中的代码周围放置 AutoRelease 池。如果您对此代码感到好奇,我已将其包含在下面。
任何想法将不胜感激。
objective-c - NSBlockOperation 和 NSAutoreleasePool
通常,当您创建一个NSOperation
子类时,您负责NSAutoreleasePool
在-main
方法中创建和释放一个。
使用时NSBlockOperation
,是否需要在块中创建自动释放池?
iphone - NSAutoreleasepool:iPhone 应用程序中的内存管理问题
这就是我在控制台中得到的警告。虽然它不会造成崩溃,但似乎是一些内存管理问题。
有什么问题?
我没有自动释放我的分段控制。
iphone - 在游戏中加载屏幕(确保动画在过渡期间不会卡顿)
我有一个 cocos2d 游戏,一旦游戏加载并运行,它的运行速度在 55 到 60fps 之间。
但是,由于我的菜单和游戏都使用了精灵表(每个一个),加载游戏时存在一个交叉点,这会导致内存警告,因为太多的大 png 加载到内存中。
我实现了一个简单的 CCScene 来转换到加载,(轻量级,允许菜单在继续加载主游戏场景之前解除分配)。
这非常有效。然而,我遇到了一个小障碍,在我的加载屏幕上,我的主角在加载这个词旁边旋转(以显示正在发生的事情)。
我发现我可以使用 NSThread 在不同的线程中加载游戏,让加载场景的动画继续畅通无阻(这带来了非常愉快的用户体验)。
但是,5-6/10 次,我收到此错误消息。
我正在使用此代码加载我的游戏。
在一个按钮内 -
在新线程中执行的方法 -
关于如何防止发生的任何事情发生的任何想法?
NSLock 是在 gameScene 尝试加载 gamesheet.plist(精灵表和坐标中的单个图像的帧名)时引起的
ios - NSAutoreleasePool。什么时候适合创建一个新的自动释放池?
在 iOS/CocoaTouch 上,我经常看到在方法中创建新的 NSAutoreleasePool 实例的代码。我最近在 NSOperation 中看到了一个。
设置新的 NSAutoreleasePool 实例的基本规则是什么?为什么这比简单地依赖在 main.m 中创建的预先存在的发布池更可取?
谢谢,
道格