我正在尝试在 IOS4 应用程序中使用目标 zip (v1.01e),因为我希望能够通过电子邮件发送受密码保护的 zip 文件。
我在我的应用程序中获得了目标 zip 源代码文件,但在遵循此入门指南后遇到了一些问题。http://code.google.com/p/objective-zip/wiki/GettingStarted
我使用以下命令
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:@"yourFiles.zip" mode:ZipFileModeCreate];
但这总是无法通过下面显示的代码从方法 zipOpen2(第 507 行)返回 null。这里:
if (ziinit.filestream == NULL)
return NULL;
在堆栈跟踪之后,它通过以下方法:
//First
- (id) initWithFileName:(NSString *)fileName mode:(ZipFileMode)mode
//Second
extern zipFile ZEXPORT zipOpen (pathname, append)
//Third
extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc_def)
但是,我注意到第二种方法有这个代码。
extern zipFile ZEXPORT zipOpen (pathname, append)
const char *pathname;
int append;
{
return zipOpen2(pathname,append,NULL,NULL);
}
当我从这个方法查询字符串路径名(在 GDB 中)的值时,我得到:
0x1b7f30 似乎没有指向有效对象。
所以我的问题:
- 是
const char *pathname
什么,它做了什么,它是否弄乱了路径名?AFAIK char 是一个不能代表文件名的单个字符? - 显示的代码来自目标 zip 项目的源代码,而不是我自己的,所以我假设它可以工作。这可能是我对它的误解。那么还有哪些其他可能的原因会导致这个问题呢?
有关更多信息initWithFileName:
,请获取参数文件名并通过zipOpen()
创建指向文件名的指针将其传递给,如下所示。
_fileName = [fileName retain];