我正在尝试加载UIDocument以快速预览其内容(它们包含在文件包装器中)。我叫这段代码:
-(void)previewLoadDocAtURL:(NSURL*)fileURL {
NSLog(@"... loading for preview: %@", [fileURL lastPathComponent]);
FRNBDocument *doc = [[FRNBDocument alloc] initWithFileURL:fileURL];
[doc openWithCompletionHandler:^(BOOL success) {
NSLog(@"... loaded for preview: %@", [doc.fileURL lastPathComponent]);
问题是它有时需要40秒才能获得日志,而有时它只需要几毫秒。这是40秒:
2012-06-27 13:58:31.612 Meernotes[4444:11303] ... loading for preview: NOTEBOOK-C759AD40-E6DE-4241-9E5A-22C458BEF8DA.MBOOK
2012-06-27 13:59:11.870 Meernotes[4444:11303] ... loaded for preview: NOTEBOOK-C759AD40-E6DE-4241-9E5A-22C458BEF8DA.MBOOK
以下是几毫秒:
2012-06-27 14:02:50.829 Meernotes[4510:11303] ... loading for preview: NOTEBOOK-C759AD40-E6DE-4241-9E5A-22C458BEF8DA.MBOOK
2012-06-27 14:02:50.896 Meernotes[4510:11303] ... loaded for preview: NOTEBOOK-C759AD40-E6DE-4241-9E5A-22C458BEF8DA.MBOOK
为什么会如此?如何防止需要40秒?
修改
我做了更多测试。事实证明,这只发生在加载本地文件时的模拟器中。有趣的是我启动模拟器需要40秒。然后我再次启动模拟器,它需要几毫秒。然后我再次启动模拟器,需要40秒。所以这实际上看起来像一个bug。我正在使用最新的xCode 4.5 DP2,所以我觉得有时间提交错误。
答案 0 :(得分:2)
通常iCloud文件是按需下载的,所以如果您的文档在iCloud中,并且它之前从未打开过,可能需要一段时间,具体取决于您的互联网连接和文件大小:)
我注意到iCloud第一次加载的东西比平常多了几秒钟。
最后,iCloud API太麻烦了。难怪为什么很少有官方应用程序在iOS5 / OSX10.7中采用它。但是不要过分责怪苹果,毕竟这是他们的第一次迭代:)