我正在开发 iPhone 应用程序。我正在使用 NSThread 连续调用包含 C++ 代码的函数。 当我使用 NSThread 或 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{ 函数调用 } 然后它在 5 分钟后给我“收到内存警告”警告并使应用程序崩溃。 但是当我在主线程/队列上运行这个函数时,它就可以正常工作了。
我也试过 Xcode 分析器来检查内存泄漏,但没有发现内存泄漏。
我该如何解决这个问题?
提前致谢。
最佳答案
仪器可能看不到所有内存泄漏,尤其是当您通过传递保留函数调用某些 C 代码时。
如果不知道你的线程包含什么,很难给你答案,但你可能想检查你的代码是否有未释放的对象/错误释放/销毁的对象。
您还应该检查您没有创建一大堆线程 (NSThread
),并且它们在终止后正确地释放了它们的内容。
顺便说一句,您的应用不应在收到内存警告时终止,这是来自操作系统的正常消息。在调用 viewWillUnload
/didReceivedMemoryWarning
函数时检查您的释放。
您还应该尝试使用模拟器手动创建内存警告
关于ios - "Received memory warning"在 ios 中使用 NSThread 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10737794/