2012-11-20 23 views
1

我想保持一个GKSession每10秒钟一个预定的重新发生的ping。有人说NSData对象应该是4个字节长。如何创建一个4字节大的NSData?

如何创建这样一个4字节的ping NSData对象? 是否这样?

int number = 1234; 
NSData *pingData = [NSData dataWithBytes:&number length:4]; 

还是有更简单/更准确的方法吗?

回答

2

如果“四字节”对您的代码的含义至关重要,那么最好将该变量键入为uint32_t。该类型被明确定义为四个字节宽,而int通常被假定为四个字节,但并不真的保证如此。

但是您创建数据对象的代码是正确的。

+0

这是一个重要的区别。然而,在64位计算时代,我认为不应该认为'int'被认为是4字节了。据我所知,“int”是操作系统主要支持的处理器上的单个寄存器的大小,所以16位(如MSDOS,基本不存在)上的2个字节,32位上的4个字节(例如iOS和旧OS X)和64位(如Modern OS X)上的8个字节。这样'int'很可能是目标架构在使用时最有效的数据类型。 – borrrden

+1

即使在64位Mac上,int也是4个字节。 Mac OS X就是所谓的“LP64”系统,意思是指长和指针是64位。 –

+0

是的,就像Catfish_Man所说的那样,对Mac或iOS的程序员来说,这是一个理论上的问题,而不是实际的问题。但是我仍然认为最好先编写正确的代码,而不是依赖整个代码运行时的宽度。 – Chuck