2

我确实找到了Cocoa Touch 的 64 位转换指南,但老实说,我觉得它非常混乱。我在我的代码中主要使用 CGFloat 和 int,而在 Core Data 中我的整数是 64 位的。我的应用程序在 64 位模拟器和我的 iPhone 5 上编译并运行良好,但我没有 5s 可以测试,所以我不能确定。例如,“修复由数据类型大小变化引起的对齐问题”是什么意思。我们需要对指针做一些不同的事情吗,指针在 32 位和 64 位应用程序中似乎有不同的大小?

编辑:我刚刚更改了我的架构以包含 64 位,它给了我一大堆错误,所以这是一个非常有用的起点。

EDIT2:这个链接实际上比我最初找到的那个更有帮助。

4

1 回答 1

0

最简单的方法是在包含 64 位的模拟器上运行应用程序。使用 iPad Air 或 iPhone6,或“存档”应用程序。这将自动显示警告。模拟器(iPad Air 或 iPhone6)将可靠地重现 64 位问题。

但是,我收到了大约 100 个警告和一个真正的问题。将 int 转换为 BOOL 在 64 位中的工作方式不同。布尔 b=(布尔)3; b==YES 在 32 位中为 FALSE,但在 64 位中为 TRUE。

另一个特殊情况是 NSNotFound,在 32 位和 64 位上的值不同!在警告中查找常量“NSNotFound”(9223372036854775807)与“int”类型表达式的比较总是错误的。

最后,它是关于在 for 循环中更改或强制转换大量列表计数(无论如何都无法保存长值对象)。没用的工作,IMO。Apple 似乎想通过在 64 位平台上不包含 32 位库或剥离应用程序来节省设备空间?

于 2015-01-19T08:32:24.607 回答