旧的解析器依赖于 aFILE *
来工作。但是,适用于 iOS 的 Dropbox Sync API 返回 aNSFileHandle *
而不是 aFILE *
作为文件句柄。
所以我尝试fileDescriptor
使用NSFileHandle
:
- (NSFileHandle )readHandle:(DBError * )error
返回文件的只读文件句柄。如果文件未缓存,则该方法将阻塞,直到文件被下载。退货
如果文件可以读取,则为文件句柄,如果发生错误,则为 nil。
并作为FILE *
:
- (void)loadDBFile:(DBFile *)dbFile
{
DBError *dbError;
NSFileHandle *fileHandle = [dbFile readHandle:&dbError];
if (fileHandle) {
FILE *file = fileHandle.fileDescriptor;
fseek(file, 0, SEEK_END); // EXE_BAD_ACCESS here!
// ...
}
}
但是,有一个EXE_BAD_ACCESS
在线fseek
。