iPhone 4和5上64位整数的位板按位操作?

时间:2014-02-24 12:42:10

标签: iphone objective-c ios7 64-bit bitboard

我有一个相当有趣的问题。我正在使用iOS 7的位板编写国际象棋引擎,我想在iPhone 4,4s,5和5s上工作。到目前为止,我在iOS 64bit iPhone模拟器上进行了所有测试,但我决定在手机上运行它,所有的黑棋都丢失了。我很快发现这是因为我的iPhone是iPhone 5,我认为它在64位数字上的按位操作存在一些问题。我可以使用任何变通方法让这个应用程序在iPhone 4,4和5上运行吗?或者我必须制作这款iPhone 5s吗?如果是这样的话,那将是相当令人沮丧的。

更新:经过进一步研究后我确定了问题,虽然我所有明确声明的类型都是无符号长整数,因为我将它们的集合存储在nsarrays中作为对象文字,当我在调用objectForKey之后调用integerValue时,这会返回一个NSInteger。但是,在32位手机上,当我需要64位时,NSInteger是32位。有没有办法在NSArray中存储和检索64位整数?

1 个答案:

答案 0 :(得分:0)

好的,我终于弄清楚发生了什么。我一直在nsarrays中存储位板的集合作为nsnumbers,并使用integerValue来取出它们。这在64位设备上运行良好,因为integerValue返回一个nsinteger,它是基于处理器的32位或64位整数。一旦我将所有函数调用更改为unsignedLongLongValue,它就像一个魅力。