为iPhone OS 3.1.2和2.2.1构建问题

时间:2010-01-15 00:21:07

标签: iphone backwards-compatibility

我试图让我的应用程序在2.2.1设备上运行,尽管是针对3.1.2 SDK构建的。

下表列出了我的结果

Deployment   |Base        |Device      |Result
Target       |SDK         |Version     |
-------------+------------+------------+-------
3.1.2         3.1.2        3.1.2        Runs OK
2.2.1         3.1.2        3.1.2        Runs OK
2.2.1         2.2.1        2.2.1        Runs OK
2.2.1         3.1.2        2.2.1        Builds OK, interrupt signal when run

第3行证明我的代码之间没有任何代码在sdk之间不兼容。为了找到问题的根源,我已经拿出了所有需要弱连接的东西。

程序开始后中断很快,但不是立即。它发生的重点是代码从未与3.0功能有任何关系

它停在的线是一个涉及4个浮点数(a-b)/(c / d)的简单数学运算,并且这些运算似乎没有任何问题。 (它是用C ++编写的)

在这种情况下还有什么可能导致中断信号?

更新

似乎它正在打断的确切点是将u64转换为浮动。

1 个答案:

答案 0 :(得分:0)

最终发生的事情是,当你运行这个应用程序这个配置时,突然出现问题,将u64转换为float或double。我猜u64的播放代码已经改变了?因此,只有在运行与sdk不匹配的操作系统版本时才会失败。

无论如何,解决方法是将u64转换为unsigned int,然后转换为float。当然,我只能这样做,因为我所处的情况下,有问题的数字总是适合常规的。