Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.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
游戏在真实的iPhone上崩溃,但模拟器?记忆问题?_Iphone_Objective C - Fatal编程技术网

游戏在真实的iPhone上崩溃,但模拟器?记忆问题?

游戏在真实的iPhone上崩溃,但模拟器?记忆问题?,iphone,objective-c,Iphone,Objective C,我已经用Cocos2D构建了我的第一个游戏。它在模拟器上运行良好。但当它在实际的iPhone上运行时,它崩溃了。我不知道为什么。我以为是内存泄漏,所以我尝试检测,但没有发现泄漏。我试图增加和减少帧速率,但都没有成功。有经验的人请帮帮我。我现在压力很大。如果有人有同样的问题,请与我分享你的意见 非常感谢。对不起,您需要详细说明。它是如何崩溃的?错误日志怎么说?你可以考虑的一件事是你的游戏消耗的内存量。如果它在实际设备上使用的内存超过64MB,操作系统很可能会终止它。另一方面,在模拟器中,你的应用程

我已经用Cocos2D构建了我的第一个游戏。它在模拟器上运行良好。但当它在实际的iPhone上运行时,它崩溃了。我不知道为什么。我以为是内存泄漏,所以我尝试检测,但没有发现泄漏。我试图增加和减少帧速率,但都没有成功。有经验的人请帮帮我。我现在压力很大。如果有人有同样的问题,请与我分享你的意见


非常感谢。

对不起,您需要详细说明。它是如何崩溃的?错误日志怎么说?你可以考虑的一件事是你的游戏消耗的内存量。如果它在实际设备上使用的内存超过64MB,操作系统很可能会终止它。另一方面,在模拟器中,你的应用程序可能会使用更多的内存而不会出现问题。

我同意Dominic的观点-我们确实需要更多的信息来帮助你-你有控制台的输出还是调试器的堆栈

此外,虽然内存泄漏是一件坏事,但它们很少直接导致崩溃。它们会增加你的应用程序使用的内存量,因此如果你是内存密集型的,那么你可能会遇到问题,但我不会首先尝试调试它们

尝试在Instruments中运行应用程序并查看内存使用情况图表-这样,您不仅可以看到应用程序的总使用量,还可以了解应用程序的哪些部分使用最多,并集中精力减少使用量


Sam

我发现像和这样的工具对跟踪此类问题非常有帮助。

如果没有更多信息,我将尝试以下步骤:

从设备和模拟器中删除应用程序(使用点击按住技术使图标抖动),然后重新安装。有时,用户默认设置中的设置(或缺少设置)会导致崩溃,除非您删除并重新运行应用程序,否则这些设置不会被清除


还可以尝试模拟器中的“模拟内存警告”选项,看看它是否会崩溃

我也遇到过类似的问题(我也使用Cocos,但我不认为这是Cocos特有的)。最好的办法是插入iPhone并在其崩溃时观看stacktrace(或者在事件发生后检索stacktrace)

这种情况经常发生在我身上,因为iPhone和模拟器之间的资源不同步;换言之,一些资源将如何提供给模拟器(例如:图像),但无论出于何种原因,这些相同的资源没有传输到iPhone。有时,如果我在模拟器上运行“干净”,我会观察到同样的问题


调试这些类型的问题非常令人沮丧,但您会习惯的。

感谢您的回复,错误没有说明任何问题。在模拟器上运行时,它是完全正常的。我的文件只有15MB。它太大了吗?游戏分为三个部分:介绍、游戏和游戏结果。它开始在游戏中崩溃。它只是黑了,停止了比赛。这只发生在实际的iPhone中。我尝试了很多方法,比如用AtlasSprite代替Sprite制作动画,减少了图像的数量。我会在不需要的时候移除Child,这样图像就不会相互重叠。我现在不知道。真的很沮丧。我已经尽我所能减少内存使用。嗯,是因为我创建了这么多的类吗?我总共有8个类来构建这个游戏。不,你拥有的类的数量不是问题(8个并不多!)-更多的是你每个类的实例数量-如果问题与内存有关的话!你的最高内存使用量是多少MB?嗯,我能问你一件事吗?除了内存问题之外,游戏在iPhone上崩溃的常见原因是什么。我现在正在做的是,我删除了所有的AtlasSprite和Sprite,即使是计时器、文本,上次图像有4种颜色,现在我删除了3种,左一种,我试图查看CPU采样器,当我开始玩游戏时,它跳得很高。我现在不知道为什么,是因为我的图像太大了吗?好吧,没有堆栈跟踪,也没有错误。我现在要尝试的是创建一个新的应用程序副本,每次更改都在手机上尝试。最终,它将停止工作-这就是你的错误所在!我认为,如果你把所有的东西都搬走了,但它仍在崩溃,那么你可能找错地方了。(如果您使用的是openGL,您应该期望CPU图是高的!)