【发布时间】:2014-02-24 12:42:10
【问题描述】:
我有一个相当有趣的问题。我正在使用 iOS 7 的位板编写一个国际象棋引擎,我想在 iPhone 4、4s、5 和 5s 上工作。到目前为止,我一直在 iOS 64 位 iPhone 模拟器中进行所有测试,但我决定在我的手机上运行它,并且所有的黑棋子都不见了。我很快发现这是因为我的 iPhone 是 iPhone 5,我认为它在 64 位数字上的按位运算存在一些问题。有什么解决方法可以让这个应用程序在 iPhone 4、4s 和 5 上运行吗?还是我必须只制作这款 iPhone 5s?如果是这样的话,那将是相当令人沮丧的。
更新:经过进一步调查,我确定问题在于,虽然我所有明确声明的类型都是无符号长长整数,但因为我将它们的集合作为对象文字存储在 nsarrays 中,当我在调用 objectForKey 后调用 integerValue 时,这将返回一个 NSInteger。但是,在 32 位手机上,当我需要 64 位时,NSInteger 是 32 位。有没有办法在 NSArray 中存储和检索 64 位整数?
【问题讨论】:
-
显示一些代码,尤其是在您定义存储位的方式的地方。
-
@Arkku - 我将它们存储为 u_int_64(unsigned long long int typdef as Bitboard)作为非原子属性。我现在正在工作,但今晚回家后会发布一些代码。
标签: iphone objective-c ios7 64-bit bitboard