摆脱自动释放池

问题描述

| 我有一个iPhone应用程序,崩溃时没有任何解释。读完建议不要为iOS使用自动释放池后,我去了我的应用程序中搜索它们,并发现了三个(包括main.m中的一个和NSThread中的一个)。 我到底该怎么做才能从代码中消除这些? 谢谢! 编辑1 我正在打印,但是看不到为什么崩溃。基本上,我启动一个调用方法的线程,然后应用程序崩溃。设置该方法要做的第一件事是打印到控制台(不显示任何值,只是为了表明调用已起作用),但是到那时为止。很奇怪。关于如何调试此功能的任何想法?     

解决方法

您从哪里读到,建议不建议使用自动释放池?我建议您找到一些更好的信息资源。 当然,您不应随意使用自动释放池,使用不当会导致问题,但是在某些情况下需要使用它们。至少应在“ 0”中找到一个。正如您在ѭ1中找到的那个一样。假设您的代码正确使用了它们,则它们不太可能对您的崩溃负责。 当应用程序崩溃时,在调试模式下运行时您什么都没得到吗?控制台中是否有任何堆栈跟踪信息,还是记录了有关内存警告的消息?应用程序是随机崩溃还是仅在执行特定操作后崩溃?更多信息和/或代码将很有用。     ,属于iOS模板的自动发布不是问题。自动释放池经常是必需的,并且可能不是您的应用崩溃的原因。 解决您的问题 将NSLog语句添加到您的代码中,以尝试找出应用程序崩溃的位置 使用仪器检测内存问题和泄漏 您可能释放对象过多。这是出色的《内存管理指南》。     ,根据Apple文档的要求,必须在主要功能和新线程中自动释放。因为启动应用程序时会保留一些内存来启动应用程序。如果从主函数内存泄漏中删除的自动释放池将在创建新线程时由模拟器以相同方式显示。     ,自动释放池是必需的,自动释放池的存在当然不是您的问题。如果您的应用程序在没有有用日志的情况下失败,请尝试为异常设置断点。 http://developer.apple.com/library/mac/#documentation/IDEs/Conceptual/Xcode4TransitionGuide/Debugging/Debugging.html