objective-c字节数组长度在32位和64位编译之间不同

时间:2015-01-31 11:25:41

标签: objective-c arrays byte 32bit-64bit

我在.h文件中定义了以下内容:

extern Byte cADPU_IDToken[];

并在相应的.m文件中:

Byte cADPU_IDToken[]   = {0xDF,0x00,0x06,0x07};

当执行iPad2的应用程序(32位)时,我得到以下代码:

NSData *test = [[NSData alloc] initWithBytes:cADPU_IDToken length:sizeof(&cADPU_IDToken)];
NSLog(@" ..ARM64... %lu", test2.length);

结果:4个字节(这是正确的)。

当执行iPad5(64位)时,我得到结果:8个字节!?

我做错了什么以及如何解决以便App在任何32/64 iPad / iPhone上正常运行?

此致

取值

1 个答案:

答案 0 :(得分:0)

我建议你阅读64-Bit Transition Guide for Cocoa。 对于您的情况,解决方案是将“字节”更改为“uint8_t”:

  

我们的建议是选择一个   C99表示,准确反映您的应用程序所需的值范围。

     

uint8_t:0到255

相关问题