Я пытаюсь наполнить сжатый байтовый буфер на iOS 5.0.
Я использую категорию NSData, найденную в CocoaDev .
Однако каждый раз, когда я вызываю gzipInflate для объекта NSData, он возвращает «nil».
Я попытался установить связь с libz, собирая как симулятор, так и устройство, и попробовал чистую сборку, но ни одна из них не удалась.
Объект NSData содержит действительные данные в сжатом формате.
Любая помощь будет оценена.
EDIT1: вот код, который я использую.
uint8_t appendArray[1];
for (int i=0; i != 1024; i++) {
appendArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t.
[tempdata appendBytes:appendArray length:1];
}
NSData *almostdata = [tempdata gzipInflate]; // Returns nil
assert(almostdata != nil); // Fails
Tempdata - это объект NSMutableData с емкостью 1024 байта. readByte - это метод для чтения одного байта из сетевого потока.
Метод gzipInflate происходит от здесь .
Данные из потока имеют длину 1024 байта, а сжатые.
EDIT2: это Z_BUF_ERROR, и все же выходной буфер более чем достаточно велик для байтов.
EDIT3: эта проблема была вызвана только тем, что я неправильно прочитал сетевой протокол. Мне просто пришлось объединить ВСЕ данные из потока, прежде чем пытаться разархивировать.