NSData ведет себя как расходуемый поток данных. Возможный? - PullRequest
2 голосов
/ 10 октября 2009

В настоящее время я занимаюсь обработкой данных. Я принимаю потоки байтов NSData lloonngg, а затем анализирую эти данные. Разбор тривиален. Тем не менее, я должен имитировать потребление данных, когда я анализирую с помощью не очень элегантной бухгалтерии. Вот как выглядит типичный метод в категории NData, которую я реализовал:

// Получение 32-разрядного числа с прямым порядком байтов - (uint32_t) getInt32OffsetIncrement: (NSUInteger *) смещение {

uint32_t unused;
NSRange myRange = NSMakeRange(*offset, sizeof(unused));

[self getBytes:&unused range:myRange];

*offset += sizeof(unused);

return CFSwapInt32LittleToHost(unused);

}

Как видите, я извлекаю данные, а затем перехожу к "указателю" NSRange в поток данных. Когда я закончу, я израсходовал весь поток данных.

Я пропустил какие-либо методы в NSData, которые могут одновременно извлекать данные и перемещать указатель по длине потока данных?

Cheers, Дуг

1 Ответ

2 голосов
/ 11 октября 2009

Я только что написал код, очень похожий на этот. Я не верю, что есть какой-либо встроенный метод NSData, чтобы помочь с этим. Похоже, вы уже делаете это как категорию NSData. Я думаю, что это лучшее, что вы можете сделать, если не хотите создавать подклассы и сохранять смещение в элементе.

...