我有一个iPhone应用程序崩溃没有解释。在看到自动释放池不适合iOS之后,我去了我的应用程序中搜索它们并发现了三个(包括一个在main.m中,另一个在NSThread中)。
我需要做些什么才能从我的代码中删除这些内容?
谢谢!
编辑1
我正在打印,但看不出它崩溃的原因。基本上我启动一个调用方法然后应用程序崩溃的线程。该方法设置的第一件事是打印到控制台(没有值,只是为了显示调用工作),但它甚至没有到达那一点。很奇怪。关于如何调试这个的任何想法?
答案 0 :(得分:5)
你在哪里读到自动释放池是不明智的?我建议你找一些更好的信息来源。
当然,您不应该随意使用自动释放池,不正确的使用会导致问题,但某些情况需要它们。至少,您在main.m
找到的那个应该在那里。你应该在NSThread
找到的那个。假设您的代码正确使用它们,它们不太可能对您的崩溃负责。
当您在应用程序崩溃时,在调试模式下运行时是否可以获得任何内容?控制台中的任何堆栈跟踪,还是记录内存警告的日志消息?应用程序是随机崩溃还是仅在执行特定操作后崩溃?更多信息和/或代码将非常有用。
答案 1 :(得分:3)
属于iOS模板的自动释放不是问题。自动释放池通常是必需的,可能不是您的应用程序崩溃的原因。
解决您的问题
答案 2 :(得分:0)
根据Apple文档,需要在main函数和新线程中自动释放。因为当app启动时会保留一些内存用于启动应用程序。如果自动释放池从主函数中恢复,则内存泄漏将由模拟器在创建新线程时显示。
答案 3 :(得分:0)
需要自动释放池,并且自动释放池的存在肯定不是您的问题。如果您的应用程序在没有有用日志的情况下失败,请尝试在例外情况下设置断点。