我在iOS应用中使用QuickLook Framework来预览各种文件。我最近注意到QuickLook在我的应用的tmp
目录中保留了所有预览文件的缓存。尽管有QuickLook缓存文件有两个问题:防止iOS QuickLook生成缓存
这些缓存的文件已存储在Documents目录中。因此,理论上,如果用户想要预览所有文件(他们可能会这样做),应用程序的大小可能会增加一倍。好了,没什么大不了的,我可以定期使用此代码清除缓存:
NSFileManager *fileMgr = [NSFileManager defaultManager]; NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:NSTemporaryDirectory() error:nil]; for (NSString *filename in fileArray) { [fileMgr removeItemAtPath:[NSTemporaryDirectory() stringByAppendingPathComponent:filename] error:NULL]; }
第二,和最重要的问题是QuickLook的似乎在系统文件夹中已创造了一个二级高速缓存(未我的应用程序)。这是一个问题,因为用户可以选择在我的应用程序中加密单个文件。如果他们在加密之前预览文件,它看起来很正常。如果他们加密并在之后进行预览,则该文件仍会显示为未加密。我知道加密没有问题,因为存储在我的应用程序的
Documents
目录中的加密文件是加密的,不能被任何程序读取(正确)。这是一个主要问题,因为它可能会导致用户认为该文件未加密。这也是一个安全问题,因为它意味着QuickLook在其他地方缓存文件。
这里是我的QuickLook的代码:
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
return 1;
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//Get the stored user data and file name
NSString *FileName = [defaults objectForKey:@"FileName"]; //Name of file stored in NSUserDefaults
NSString *finalFilePath = [documentsDirectory stringByAppendingPathComponent:FileName];
return [NSURL fileURLWithPath:finalFilePath];
}
- (IBAction)previewFile:(id)sender {
//Setup QuickLook
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.delegate=self;
previewController.dataSource=self;
previewController.currentPreviewItemIndex = 0;
[previewController reloadData];
[self presentModalViewController:previewController animated:YES];
[previewController.navigationItem setRightBarButtonItem:nil];
}
有谁知道在哪里的QuickLook的缓存,或者如果有一个(也许是某种错误的)?
如何防止QuickLook缓存文件,或者如何重置缓存?如果这两者都不可能有QuickLook的iOS 6替代品(我听说iOS 6中QuickLook已更改,因此没有任何解决方法,替代方法等)?
任何解决方案或想法赞赏!
除了“我没有看到任何方式并使用'UIWebView'”(尽管功能更差),我没有任何答案。您是否曾尝试向Apple提交功能请求并查看他们的说法? – DBD 2013-04-30 13:47:38