Какой лучший способ реализовать Java-подобный ByteBuffer в Obj-C? - PullRequest
3 голосов
/ 24 марта 2009

Я пытаюсь создать приложение для iPhone, хотя я совершенно новичок в Obj-C. Для одной проблемы я бы использовал ByteBuffer в Java, но я не вижу подходящего класса в документации Apple. Поэтому мне, вероятно, придется реализовать это самостоятельно.

Мой вопрос, как это сделать лучше всего:

  • Есть ли подобный класс в Obj-C? (Это было бы лучшим решением;))
  • Должен ли я сделать это с помощью классов Obj-C, таких как NSData?
  • Или я должен остаться с простым кодом C?

Ответы [ 3 ]

8 голосов
/ 24 марта 2009

Вы, вероятно, хотите NSMutableData.

6 голосов
/ 24 марта 2009

Мое воспоминание о 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.

0 голосов
/ 06 сентября 2013

У меня похожий вопрос. Илья указал мне сюда своим ответом .

Моя цель - реализовать полнофункциональную версию Obj-C java.nio.ByteBuffer. Просто хотел узнать, что я должен использовать, чтобы получить есть

Это будет ваш пользовательский класс.

В моем случае я думаю, что NSInputStream и NSOutputStream должны быть использованы. Наверняка не NSMutableData как то, как принимается и в большинстве случаев голос за.

...