2015-09-06 2 views
0

У меня есть следующий код, который вызывает метод async в своем обработчике завершения, когда я пытаюсь отклонить предупреждение, которое он выдает.Dismissin Alert в дополнении async Исключение обработчика обработчика

недостаточность Утверждение в недействительном _UIPerformResizeOfTextViewForTextContainer (NSLayoutManager *, UIView *, * NSTextContainer, NSUInteger)(), /SourceCache/UIFoundation_Sim/UIFoundation-376.14/UIFoundation/TextSystem/NSLayoutManager_Private.m:1547

var alert1:UIAlertController = UIAlertController(title: "Data loaded", message: "all the data has been loaded", preferredStyle: UIAlertControllerStyle.Alert) 
    alert1.addAction(UIAlertAction(title: "dismis me", style: UIAlertActionStyle.Cancel, handler: nil)) 
    self.presentViewController(alert1, animated: true, completion: nil) 

    mywebapi.postAsync("account/Login", token: nil, content: postData) 
    {(succeeded,data:NSDictionary!)->() in 

    if(succeeded) 
    { 
     //Crashes at below line 
     alert1.dismissViewControllerAnimated(true, completion: nil) 


     } 
} 

ответ

1

Убедитесь, что обработчик завершения вызова вызывается в основной теме. Все операции, связанные с UI, должны выполняться в основном потоке. Вы можете обернуть звонок dispatch_async:

dispatch_async(dispatch_get_main_queue(), ^{ 
    alert1.dismissViewControllerAnimated(true, completion: nil) 
});