从关闭状态打开UIDocuments时,我知道它是在另一个线程上完成的。我的问题是,如果我的主线程上有代码可以访问文档(比如执行获取请求),那么在我尝试访问文档之前,如果打开已关闭的文档,如何保证文档将打开异步?
答案 0 :(得分:2)
不是试图阻止线程,而是阻止应用程序的用户访问文档,直到它打开。这就是完成处理程序的用途。
- (void)openWithCompletionHandler:(void (^)(BOOL success))completionHandler
调用完成处理程序时,只需关闭文档打开时显示的任何临时用户界面。这样,在文档打开时没有线程被阻塞,并且应用程序保持响应(尽管没用)。
答案 1 :(得分:0)
您应该使用documentState
类的UIDocument
属性。有关详细信息,请参阅此文档documentState description。
返回以下枚举器进行检查:
enum {
UIDocumentStateNormal = 0,
UIDocumentStateClosed = 1 << 0,
UIDocumentStateInConflict = 1 << 1,
UIDocumentStateSavingError = 1 << 2,
UIDocumentStateEditingDisabled = 1 << 3 }; typedef NSInteger UIDocumentState;
来自描述:
UIDocumentStateNormal
就是你想要的,因为:
文档已打开,已启用编辑,并且没有与之关联的冲突或错误。