iOS上的发布版本和debugging版本之间的差异物理

我有一个使用Box2D的iOS游戏。 当我在debugging模式下运行它时,一切都很好。 当我在释放模式下运行它时,所有的游戏对象都会加速,看起来游戏对象的质量更高,或者类似的东西。 这很奇怪。

两个版本的帧速率几乎相同,所以这不是问题。 无论如何,游戏中的所有东西都应该是独立于帧率的。

任何想法是XCode中的项目设置可能导致这个?

当你在debugging中运行时,编译器没有进行优化,所以二进制文件要大得多,而且代码通常没有用处。 在Release中,运行优化器(默认为-Os),这种优化器可以缩小代码。 这是开发人员在testing代码时通常使用Release not Debug的原因之一,只有在真正需要lldb时才切换到Debug。

编辑:所以有几件事情可以在这里发挥差异。 首先,Box2D是一个包含的项目还是一个链接库? 如果是第一个,确保它同时具有Debug和Releaseconfiguration。 看看你的和Box2D的构build设置,看看有没有在一个configuration或另一个(或者你可能会发现一个-DSLOW)定义任何东西或一些这样的定义语句将设置(或不设置标志)。 啊,debugging我通常定义DEBUG = 1(在预处理器部分)哪个Box2D(甚至你的代码)可能用于某种目的。

如果找不到其他版本的设置,那么可以通过实际将Debugconfiguration中使用的值从-O0更改为-O1,-O2和= Os来查看优化器是否具有影响。 同样,您可以将发布设置从-Os更改为-O0。

我会猜测Debugconfiguration中的“DEBUG”设置,Release中的一些其他定义或优化器是原因,通过debugging和发布,您可以找出问题所在。 实际上,您甚至可以将(暂时)DEBUG = 1添加到发布configuration中。