objective-c - 在 iPhone 上膨胀 gzip 字节

标签 objective-c ios ios5 gzip

我正在尝试在 iOS 5.0 上膨胀 gzipped 字节缓冲区。 我正在使用 CocoaDev 中找到的 NSData 类别. 但是,每次我在 NSData 对象上调用 gzipInflate 时,它​​都会返回“nil”。

我尝试链接到 libz,为模拟器和设备构建,并尝试干净的构建,但没有成功。

NSData 对象包含有效的 gzip 压缩数据。

如有任何帮助,我们将不胜感激。

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方法来自here . 流中的数据经过压缩后长度为 1024 字节。

EDIT2:这是一个 Z_BUF_ERROR,但输出缓冲区对于字节来说足够大。

EDIT3:这个问题只是因为我误读了网络协议(protocol)而引起的。我只需在尝试解压缩之前合并流中的所有数据即可。

最佳答案

我看不到你所有的代码 - 所以这有点像在黑暗中刺伤 - 但看起来你正在读入 uselessArray - 但你正在附加来自 appendArray...

应该这样:

uselessArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t.
[tempdata appendBytes:appendArray length:1];

是这样的:

uselessArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t.
[tempdata appendBytes:uselessArray length:1];

?

关于objective-c - 在 iPhone 上膨胀 gzip 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069642/

相关文章:

objective-c - 在 swift 端形式 objective-c 端出现错误

objective-c - Objective C > UITableViewCell 按钮不按下

ios - Ionic 在 iOS 上构建和模拟 - 错误

ios - 如何关闭滑动菜单并链接回选定的选项卡?

ios - 解析嵌套的 JSON 条目

Objective-c:知道内存位置是否被释放

ios - 如何减小行间距?

ios - 如何通过代码判断iPad是黑色还是白色?

ios - 更改一个 View Controller 的 UINavigationBar 颜色

objective-c - 刷新 UIWebView