我的问题如下。我想将 NSString 封装在 NSMutableData 对象中。但我想与其他项目一起做,而不是先将它封装到 NSData 中。毕竟只是字节不是吗?
我最终的 NSMutableData 对象看起来像
[header | stringLength | NSString]
whereheader
是一个 char 并且stringLength
是一个 unsigned short。我像这样构建我的数据包
unsigned short stringLength = myString.length;
NSMutableData* nData = [NSMutableData dataWithBytes:(const void*)&header length:sizeof(char)];
[nData appendBytes:(const void*)&dataLength length:sizeof(unsigned short)];
[nData appendBytes:(const void*)myString length:stringLength];
然后我会通过 gkSession 发送它,在另一端我会提取 sting 长度,然后是字符串本身:
NSString* temp = [NSString alloc];
[data getBytes:(void*)&temp range:NSMakeRange(sizeof(char)+sizeof(unsigned short), stringLenght)];
由于某些原因,这给了我糟糕的内存访问。我怀疑这myString.length
并没有完全符合我的预期。你有什么提示吗?提前致谢。