Iphone“设备”内存泄漏

问题描述

| 运行xcode->使用仪器运行->泄漏后, 用细齿梳子越过模拟器,并且(模拟器)仪器->泄漏显示为零。但是当我运行实际的设备时,我会得到大约100多种物品的清单,
Leaked Object   #   Address Size    Responsible Library Responsible Frame
GeneralBlock-64 9   < multiple >    576 UIKit   GetContextStack
GeneralBlock-16 7   < multiple >    112 WebCore WebThreadCurrentContext
UIControlTargetAction   5   < multiple >    160 UIKit   -[UIControl addTarget:action:forControlEvents:]
__NSArrayM  5   < multiple >    160 UIKit   -[UIControl addTarget:action:forControlEvents:]
UIButton    5   < multiple >    720 
等等等等等等.. 我读到某处某人提到如果创建任何线程,它们必须位于主线程上? (WTF?这没有任何意义)。 是的,我的应用程序使用线程,但仅渲染
UIAlertViews
,并且它们都夹在
[pool autorelease]
[pool release]
之间,还有零发行的
Nsstrings
,按钮,小部件。分配,复制,保留的所有内容都将被释放。 有人知道这个线程池化,导致疯狂的内存泄漏吗? 提前致谢! **** 2011年5月25日(日本时间上午11:35)*********** 好的,我认为我已经设法确定内存问题的原因...这就是那些令人费解的“ AutoRelease UITableViewCells” ...在导致问题之前,它们并没有足够及时地被释放我的应用程序崩溃了...我只是查看了AppleTableViewCell API,但没有发现有关确定\'TV-Cell \'实际上是否为\'IN-USE'的信息。因为我的应用程序只能容纳30个每页存储单元,但是这些自动释放的单元一直在增长,直到出现内存不足警告(124个电视单元)。任何人...?知道如何安全释放这些...吗? – 我尝试使用常规的'Alloc \',然后释放直接从出队队列中出来的那个(只是,我知道至少有很多人正在释放,但正如预期的那样,我不知道,是否有可能在ViewDidUnload()中为(队列中的单元格)[释放单元格]并在整个队列中进行步枪来确保它们全部被杀死(当然,我不会使用自动发布)任何想法,任何IOS大师..?提前谢谢!– ChinaSailor 40秒前编辑     

解决方法

您需要在启用了“僵尸”的情况下运行“仪器”,以便泄漏的对象在泄漏后可以检查。 仅在环境变量中包含NSZombieEnabled是不够的。您也必须在Instrument中将其打开。本教程对我有所帮助;如何使用XCode和Instruments教程调试内存泄漏。     ,  我读到某处某人提到如果创建任何线程,它们必须位于主线程上? (WTF?这没有任何意义)。 false-您可以从主线程以外的其他线程创建线程。同意,这没有任何意义。   是的,我的应用程序使用线程,但仅用于呈现UIAlertViews,它们都被夹在[pool autorelease]和[pool release]之间,还有零未发布的NSString,按钮,小部件。分配,复制,保留的所有内容都将被释放。      有人知道这个线程池化,导致疯狂的内存泄漏吗? 在主线程上创建和操作UIKit对象。期。 祝好运! (尽管该答案可能不是您所有/任何问题的确切原因,但从给出的说明来看,这是一个不错的选择,也是致命的缺陷)