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

3

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

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

  • Есть ли аналогичный класс в Obj-C? (Это было бы лучшим решением;))
  • Должен ли я делать это с помощью классов Obj-C, таких как NSData?
  • Или я должен оставаться с простым кодом C?
  • 0
    Это действительно зависит от того, что вы пытаетесь сделать. Вы должны отредактировать свой вопрос, чтобы добавить немного больше контекста.
  • 0
    Моя цель - реализовать полнофункциональную версию java.nio.ByteBuffer для Obj-C. Просто хотел знать, что я должен использовать, чтобы добраться туда.
Теги:
porting

3 ответа

8
Лучший ответ

Вероятно, вы хотите получить NSMutableData.

  • 0
    +1 - это было бы это.
  • 0
    Хорошо ... у вас есть пример, как прочитать, например, float из NSMutableData? Или любой другой тип данных?
Показать ещё 1 комментарий
5

Мое воспоминание о 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
    Это выглядит довольно многообещающе. Большое спасибо.
  • 1
    Мне любопытно посмотреть, как получится ваш порт, и мне было бы очень интересно использовать результат. Пожалуйста, пинг меня, когда он будет готов.
Показать ещё 5 комментариев
0

У меня есть аналогичный вопрос. Илья указал мне здесь свой ответ.

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню