2014-01-07 102 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

我更新了你發佈的代碼之前和之後的相同問題 –