2014-01-07 54 views
0

我的应用程序是基于文档的应用程序我使用UIViewController子类EditViewsController在我的自定义UIDocument对象的帮助下呈现保存的内容。是否安全地关闭viewController而不关闭文档Object

EditViewsController看起来像下面

enter image description here

轻击左上角的关闭按钮,将触发以下方法

-(IBAction)closeForm:(id)sender 
{ 
     // _formDocument is my UIdocument subclass Object 
     [_formDocument closeWithCompletionHandler:^(BOOL completion){ 
       [self dismissViewControllerAnimated:YES completion:nil]; 
     }]; 
} 

我的问题是,当调用该方法closeWithCompletionHandler我的应用程序在关闭之前冻结一段时间。

我的问题是,关闭视图控制器没有关闭文件是正确的(只需调用dismissViewControllerAnimated:里面的烧制方法),或者我必须在后台线程中运行该方法以摆脱 冻结?

+1

completionHandler块似乎是调用后台线程,因为所有UIKit事件都必须在主线程上发生,所以需要在主线程上调用dismissViewController。 – ldindu

回答

0
-(IBAction)closeForm:(id)sender 
{ 
    // _formDocument is my UIdocument subclass Object 
    [_formDocument closeWithCompletionHandler:^(BOOL completion){ 
      [NSOperationQueue mainQueue] addOperationBlock:^{ 
       // Dismissing it on main thread 
       [self dismissViewControllerAnimated:YES completion:nil]; 
      }]; 
    }]; 
} 
+0

仍然没有运气,但我的应用程序在第3或第4次冻结后反应很快 –

+0

在主线程上调用上面的dismissViewCOntroller对您不起作用,对不对?你是否有同样的问题或者现在是否改变了? – ldindu

+0

我更新了你发布的代码之前和之后的相同问题 –