Это может быть легко.Я использую GCDAsyncSocket для получения переменного количества байтов, представляющих отдельные фрагменты данных с сервера, которые появляются в объекте NSMutableData.
Если бы данные были словами, они могли бы выглядеть следующим образом:
ChunkChunkChunkChu
nkChunkChunkChunkCh
Таким образом, после обработки трех фрагментов, частичный фрагмент "Чу" остается и должен быть сохранен, чтобы следующая партияданные могут составить конкуренцию этому фрагменту.
В настоящий момент процесс обработки выглядит следующим образом:
receive data, appending to myBuffer
process contents of buffer up to last complete chunk
create new myBuffer with partial fragment of remaining data chunk at end of buffer
back to the start
Это работает хорошо, но я не уверен, является ли это наиболее эффективным способом.Я вижу, что NSMutableData имеет replaceBytesInRange, который я мог бы использовать, чтобы удалить количество обработанных байтов из начала буфера, но это, как сообщается, медленная операция .
Любые предложения о том, как лучше всего это сделатьэтот?Если это имеет значение, я использую ARC, поэтому я ожидаю, что накладные расходы на создание / освобождение уменьшатся.