为什么加载UIDocument需要40秒?

时间:2012-06-27 13:04:45

标签: iphone objective-c icloud uidocument

我正在尝试加载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,所以我觉得有时间提交错误。

1 个答案:

答案 0 :(得分:2)

通常iCloud文件是按需下载的,所以如果您的文档在iCloud中,并且它之前从未打开过,可能需要一段时间,具体取决于您的互联网连接和文件大小:)

我注意到iCloud第一次加载的东西比平常多了几秒钟。

最后,iCloud API太麻烦了。难怪为什么很少有官方应用程序在iOS5 / OSX10.7中采用它。但是不要过分责怪苹果,毕竟这是他们的第一次迭代:)