Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 设备上的内存警告,不适用于仪器_Ios_Restkit_Instruments_Didreceivememorywarning - Fatal编程技术网

Ios 设备上的内存警告,不适用于仪器

Ios 设备上的内存警告,不适用于仪器,ios,restkit,instruments,didreceivememorywarning,Ios,Restkit,Instruments,Didreceivememorywarning,我有一个巨大的同步过程,在这个过程中,我下载并解压400-500个XML文件,然后解析它。有了这些数据,我将通过restkitapi创建许多核心数据对象。一开始,我有一个内存警告,活动字节数为450mb+,因为我没有使用自动释放池,只在最后尝试保存核心数据 我修复了这个问题,现在经常保存核心数据并使用@autoreleasepool块。当我现在用仪器运行我的应用程序时,我可以看到活动字节只有20mb-30mb,总是释放内存,而且永远不会变大。这个过程很有效。但当我在没有仪器的情况下启动应用程序时

我有一个巨大的同步过程,在这个过程中,我下载并解压400-500个
XML
文件,然后解析它。有了这些数据,我将通过
restkitapi
创建许多核心数据对象。一开始,我有一个内存警告,活动字节数为450mb+,因为我没有使用自动释放池,只在最后尝试保存核心数据

我修复了这个问题,现在经常保存核心数据并使用
@autoreleasepool
块。当我现在用仪器运行我的应用程序时,我可以看到活动字节只有20mb-30mb,总是释放内存,而且永远不会变大。这个过程很有效。但当我在没有仪器的情况下启动应用程序时,在查看文件后,我会收到一条
内存警告
。后来应用程序崩溃了


使用
工具和不使用
工具运行应用程序有什么区别?为什么会有不同的结果?

我之所以添加这个答案,是因为我很高兴看到这个页面

@borrrden的建议部分是正确的。您可以配置配置文件时要使用的生成设置。要进行配置,请转到Xcode并打开编辑方案对话框,然后在左侧菜单Profile XXX.app中选择。您将看到您可以选择构建配置(调试或发布)

@hooleyhoop的评论对于找到解决方案更为关键。即使您的概要文件构建配置设置为Debug,概要文件构建和从Xcode中默认运行之间仍然存在差异。您可以在“运行”部分中指定诊断。在这里,有一个名为启用内存管理下的僵尸对象的选项。确保此选项未选中

分析时不使用这些诊断运行设置。这就是你所经历的行为的解释。配置文件部分上也没有诊断选项卡



结果是,我的游戏(阿甘)在主菜单启用僵尸对象的情况下无所事事5分钟后崩溃。一旦我禁用了僵尸对象,我的游戏就会无限期地运行。45分钟后,仍然没有内存警告。

一个区别是,通常使用仪器进行评测会导致生成发布版本,而通过Xcode运行会导致生成调试版本。但不确定这会如何影响这种情况。例如,您可以在调试配置中启用僵尸,但在发布配置中不启用僵尸-我只是喜欢这个平台。我只是不知道instruments正在使用发布版本。因为我的对象太大,所以启用僵尸是失败的。当我使用发布版本时,一切都像一个魔咒一样工作。请给我一个答案,这样我就可以接受了。你不知道这对我有多大帮助。非常感谢:)这是因为启用僵尸会故意泄漏所有对象,以便在向死亡对象发送消息时能够跟踪。好吧,这就是原因。我不确定。谢谢你。我认为这是一件很容易忘记的事情,因为它仍然是打开的。