我在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