为啥加载 UIDocument 需要 40 秒?

Posted

技术标签:

【中文标题】为啥加载 UIDocument 需要 40 秒?【英文标题】:Why does it take UIDocument 40 seconds to load?为什么加载 UIDocument 需要 40 秒? 【发布时间】:2012-06-27 13:04:45 【问题描述】:

我正在尝试加载 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 秒。等等所以这实际上看起来像一个错误。我正在使用最新的 xCode 4.5 DP2,所以我想是时候提交错误了。

【问题讨论】:

您最终找到了解决方案还是提交了雷达?我遇到了同样的问题,这很烦人。 【参考方案1】:

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

我注意到 iCloud 首次加载某些内容时比平时多花几秒钟时间。

最后,iCloud API 非常有问题。难怪在 ios5/OSX10.7 中很少有官方应用采用它。不过也不要太责怪苹果,毕竟这是他们的第一次迭代 :)

【讨论】:

猜你是对的。我已经更新了我的问题 - 这不是一个真正的问题,而是更多的错误报告。

以上是关于为啥加载 UIDocument 需要 40 秒?的主要内容,如果未能解决你的问题,请参考以下文章

为啥一个 40 亿次迭代的 Java 循环只需要 2 毫秒?

处理包含多个图像的 UIDocument 中的图像加载/存储

使用 HttpClient 的 HTTP Post 请求需要 2 秒,为啥?

UIDocument 相关 EXC_BAD_ACCESS

如何更新 UIDocument 数据

为啥我的调用会在网格加载时间上增加 10 秒?