在Obj-C中实现类似Java的ByteBuffer的最佳方法是什么?

时间:2009-03-24 15:57:38

标签: java objective-c porting

我正在尝试为iPhone构建应用程序,尽管我是Obj-C的新手。对于一个问题,我在Java中使用ByteBuffer,但我在Apple的文档中没有看到任何合适的类。所以我可能必须自己实现它。

我的问题是,如何做到最好:

  • Obj-C中是否有类似的课程? (那将是最好的解决方案;))
  • 我应该使用像NSData这样的Obj-C类吗?
  • 或者我应该使用普通的C代码吗?

3 个答案:

答案 0 :(得分:8)

你可能想要NSMutableData。

答案 1 :(得分:6)

我对java.nio.ByteBuffer的回忆(来自与许多人之前的Java合作)是ByteBuffer实现对字节数组的顺序读/写。这类似于由NSInputStream支持的NSData(用于输入):

NSInputStream *inputStream = [NSInputStream inputStreamwithData:myData]; //assuming myData is NSData*

float myFloat;

if([inputStream hasBytesAvailable]) { // NO if you've already read to the end of myData
  NSInteger bytesRead = [inputStream read:&myFloat maxLength:sizeof(myFloat)];
  NSAssert(bytesRead == sizeof(myFloat);
}

您可以使用NSOutputStream写入NSData来执行类似操作。

答案 2 :(得分:0)

我有一个类似的问题。 ilya pointed my here with his answer

  

我的目标是实现一个功能齐全的Obj-C版本   java.nio.ByteBuffer中。只想知道我应该用什么来获取   有

这将是您的自定义类。

对于我的情况,我认为应该使用NSInputStreamNSOutputStream。肯定不是NSMutableData,因为被接受的和大部分被投票的答案如何。