Ios 为arm64编译时,SpriteKit游戏的行为不正确

Ios 为arm64编译时,SpriteKit游戏的行为不正确,ios,sprite-kit,arm64,Ios,Sprite Kit,Arm64,我有一个旧的SpriteKit游戏,我正在尝试恢复。我在我的iPhone6plus上尝试过这个游戏,但对象的行为不正确(位置混乱,使游戏无法播放)。我首先认为这是由于屏幕大小,然后我尝试了不同的iOS版本,知道SpriteKit在iOS9上有缺陷。直到我在iPhone5和5s上尝试了完全相同的操作系统,我才发现问题所在。在5号,我的游戏运行正常,但在5号,它运行不正常。我已经从构建目标中删除了arm64,迫使它也在iphone5s上以32位模式编译和运行,并且它又恢复了完美的工作状态 我已经检查

我有一个旧的SpriteKit游戏,我正在尝试恢复。我在我的iPhone6plus上尝试过这个游戏,但对象的行为不正确(位置混乱,使游戏无法播放)。我首先认为这是由于屏幕大小,然后我尝试了不同的iOS版本,知道SpriteKit在iOS9上有缺陷。直到我在iPhone5和5s上尝试了完全相同的操作系统,我才发现问题所在。在5号,我的游戏运行正常,但在5号,它运行不正常。我已经从构建目标中删除了
arm64
,迫使它也在iphone5s上以32位模式编译和运行,并且它又恢复了完美的工作状态

我已经检查了我的代码,以找到任何依赖于体系结构位的部分(例如,依赖32位浮点的部分),但没有发现任何可疑的部分。我知道任何人都很难在看不到代码的情况下说出准确的内容,但我也不可能发布整个游戏的代码

有没有什么众所周知的我会错过的东西会影响游戏在
arm64
上的行为


更新:我已将所有的
float
s更改为
CGFloat
s,但没有效果。我的代码中没有双精度s。

float
应始终为32位,
double
应始终为64位,因为IEEE 754。这是您需要担心的整数类型的大小。@Notlikethat是的,但是
CGFloat
在arm上是32位的,在arm64上是64位的,就像
CGBase.h
。#&&&&uuuLP64_uuuuu35;定义CGFLOAT_35;u类型double#定义CGFLOAT_u是双1#定义CGFLOAT_Mindbl_MIN#定义CGFLOAT_Maxdbl_MAX#否则#定义CGFLOAT_Typefloat#定义CGFLOAT#u是双0#定义CGFLOAT#定义CGFLOAT MIN FLT MIN FLT#最小FLT#最小#最小#定义CGFLOAT#如果定义CGFLOAT MAX fluMax FLT#fluMax#如果代码35类型定义CGFLOATU类型CGFLOAT#定义CGFLOAT_DEFINED 1
我还是不明白,如果是另一种情况,我会想到溢出等,但事实并非如此。@CanPoyrazoğlu你能至少分离出代码中可以重现你所说内容的部分(或者至少显示出一些奇怪/不一致),并用该代码更新你的问题吗?另外,请注意注释不适合粘贴其中的代码(因为可读性)。最好用更多的数据来更新你的问题。@Whirlwind相信我,如果可以的话,我会的。但是我不知道这个问题是从哪里来的,有很多类,它们中的任何一行都可能有问题。如果我能为这个问题创建一个SSCCE,我早就发布了。(顺便说一句,代码确实属于注释,因为它只是对另一条注释的回答,但我同意可读性部分。)
float
应始终为32位,
double
应始终为64位,因为IEEE 754。这是您需要担心的整数类型的大小。@Notlikethat是的,但是
CGFloat
在arm上是32位的,在arm64上是64位的,就像
CGBase.h
。#&&&&uuuLP64_uuuuu35;定义CGFLOAT_35;u类型double#定义CGFLOAT_u是双1#定义CGFLOAT_Mindbl_MIN#定义CGFLOAT_Maxdbl_MAX#否则#定义CGFLOAT_Typefloat#定义CGFLOAT#u是双0#定义CGFLOAT#定义CGFLOAT MIN FLT MIN FLT#最小FLT#最小#最小#定义CGFLOAT#如果定义CGFLOAT MAX fluMax FLT#fluMax#如果代码35类型定义CGFLOATU类型CGFLOAT#定义CGFLOAT_DEFINED 1
我还是不明白,如果是另一种情况,我会想到溢出等,但事实并非如此。@CanPoyrazoğlu你能至少分离出代码中可以重现你所说内容的部分(或者至少显示出一些奇怪/不一致),并用该代码更新你的问题吗?另外,请注意注释不适合粘贴其中的代码(因为可读性)。最好用更多的数据来更新你的问题。@Whirlwind相信我,如果可以的话,我会的。但是我不知道这个问题是从哪里来的,有很多类,它们中的任何一行都可能有问题。如果我能为这个问题创建一个SSCCE,我早就发布了。(顺便说一句,该代码确实属于该注释,因为它只是对另一条注释的回答,但我同意可读性部分。)