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

什么';在Obj-C中实现类似Java的ByteBuffer的最佳方法是什么?,java,objective-c,porting,Java,Objective C,Porting,我正在尝试为iPhone构建一个应用程序,尽管我对Obj-C一无所知。有一个问题,我会在Java中使用ByteBuffer,但我在苹果的文档中没有看到任何合适的类。所以我可能必须自己实现它 我的问题是,如何做到最好: Obj-C中是否有类似的类?(那将是最好的解决办法;) 我应该使用像NSData这样的Obj-C类吗 还是应该继续使用普通C代码 您可能需要NSMutableData。我对java.nio.ByteBuffer的记忆(在许多月前使用java时)是ByteBuffer实现对字节数组

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

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

  • Obj-C中是否有类似的类?(那将是最好的解决办法;)
  • 我应该使用像NSData这样的Obj-C类吗
  • 还是应该继续使用普通C代码

您可能需要NSMutableData。

我对
java.nio.ByteBuffer
的记忆(在许多月前使用java时)是
ByteBuffer
实现对字节数组的顺序读/写。这类似于由
NSData
支持的
NSInputStream
(用于输入):


您可以使用
NSOutputStream
NSData
写入数据来执行类似的操作。我有一个类似的问题


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

这将是您的自定义类


对于我的情况,我认为应该使用
NSInputStream
NSOutputStream
。当然不是
NSMutableData
,因为这个答案是如何被接受的,而且大多数都是投赞成票的。

这实际上取决于你想做什么。您应该编辑您的问题以添加更多的上下文。我的目标是实现java.nio.ByteBuffer的完全功能的Obj-C版本。我只是想知道我应该用什么来到达那里好的。。。您有没有从NSMutableData中读取浮点数的示例?或者任何其他数据类型?当然没有这样的方法,但是您可以将它们作为NSData的一个类别来实现,因此它们可以用于NSData及其任何子类。只需使用getBytes:length:获取sizeof(float)字节,然后强制转换缓冲区。这看起来很有希望。非常感谢。我很想看看您的端口结果如何,并且对使用结果非常感兴趣。准备好后请打电话给我。我已经完成了ByteBuffer的Obj-C版本。您可以在此处查看:,github.com链接已断开,但当代码备份时,我很高兴能查看一下。哦,对不起。我不得不再次删除该分支,因为它包含一些我目前不想在线的内容。但我忘了再把它推到GitHub。他们现在在线了。
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);
}