Я последовательно получаю куски NSData
с сервера, более чем прибл. 4096
байт за раз, последовательно. Каждый полученный фрагмент может отличаться по размеру.
Что я хотел бы сделать, так это добавить куда-нибудь все эти байты и в то же время начать чтение с начала данных, последовательно, 512 байт за раз максимум.
Во время поиска я узнал об использовании NSInputStream
для этого, и вот фрагмент кода:
uint8_t bytes[512];
UInt32 length;
NSInputStream *stream = [[NSInputStream alloc] initWithData:aData];
[stream open];
while (((length = [stream read:bytes maxLength:512]) > 0)) {
if ([self.inputStreamer isKindOfClass:[PLAudioInputStreamerNoOpenClose class]]) {
[self.inputStreamer hasData:bytes length:length];
}
}
Хотя это просто работает, кажется, что инициализированный NSInputStream
не позволяет добавлять дополнительные байты после его инициализации, поэтому единственный способ, который я мог придумать, - это инициализировать NSInputStreams
для каждого фрагмента данных и блокировать до тех пор, пока он не достигнет своего конца, переходя on, чтобы сделать то же самое для следующего фрагмента байтов, как это делает приведенный выше код.
Есть ли более предпочтительное решение для такого рода задач? Любая помощь будет оценена. Спасибо,