UIDocument 相关 EXC_BAD_ACCESS
Posted
技术标签:
【中文标题】UIDocument 相关 EXC_BAD_ACCESS【英文标题】:UIDocument related EXC_BAD_ACCESS 【发布时间】:2012-08-06 06:46:47 【问题描述】:在我的应用程序的最开始,我尝试加载每个 UIDocument 以稍微预览它们的内容。这在大多数情况下都非常有效,但有时我在加载 UIDocument 后会立即崩溃。我的问题是我不知道如何解释崩溃。我什至不确定它是否与 UIDocument 的处理有关(线程 6 和 7 与 UIDoc 有关,但线程 8 似乎导致了崩溃)。
如果有人能帮我解释一下,我将非常感激:
我在所有异常上都设置了断点,但调试器不会停在特定的代码行。
【问题讨论】:
控制台的错误是什么,您能否验证您是否成功打开了您的UIDocument
? (很多操作都是异步的)
@iBlue 控制台中根本没有输出。 UIDoc 未成功打开,即我在 openWithCompletionHandler:^(BOOL success) 的成功块中拥有的内容未执行。之前就崩溃了。所以我想我提供的崩溃屏幕截图并没有真正说明错误来源,是吗?
@n.evermind,我也有类似的问题...你能告诉我们你是如何解决的吗?这对我很有帮助。
【参考方案1】:
我遇到了同样的问题。仅在我们的一个测试设备上很容易重现,读取 iCloud 文档。重新安装应用程序不会影响该错误。
我使用 NSMetadataQuery 来获取文件 URL。我的 NSMetadataQueryDidFinishGatheringNotification 接收器如下所示:
- (void)queryDidFinishGathering:(NSNotification *)notification
NSMetadataQuery *query = [notification object];
[query disableUpdates];
[query stopQuery]; // <--- This was the problem
NSMetadataItem *item = [query resultAtIndex:0];
NSURL *url = [item valueForAttribute:NSMetadataItemURLKey];
UIDocument *doc = [[CustomDocument alloc] initWithFileURL:url];
[doc openWithCompletionHandler:^(BOOL success)
// EXC_BAD_ACCESS before completion block is called :'(
];
[query enableUpdates];
删除stopQuery
电话修复了所有问题!
【讨论】:
以上是关于UIDocument 相关 EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章