ios - "Received memory warning"在 ios 中使用 NSThread 时

标签 ios multithreading memory-management

我正在开发 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/

相关文章:

ios - Alamofire ObjectMapper - 从所有模型中提取公共(public)字段并映射它们

objective-c - 如何识别从两个可用的 UITableView 中选择了哪个

c++ - 数组的动态分配

objective-c - 在 Obj-C 初始化程序期间管理引用计数的惯用方法是什么?

java - 管道中的条件执行处理程序

c - 在没有任何可以理解的原因的情况下中止 C 中的陷阱(对我来说;))

objective-c - NSURLConnection 连接 : didReceiveData: is not called after redirect

ios - 白名单不适用于 PhoneGap 3.0 ios

c# - 线程安全的OfType

c# - 在另一个线程中运行事件处理程序(没有线程阻塞)