2016-04-27 11 views
0

に私はこの種の問題を持っています。 このビューには、スレッドfuncにまだ接続されているかどうかを常に確認する必要があります。 接続が失われた場合は、performSegueWithIdentifierメソッドに電話してください。 しかし...私はそれを行う場合は、Xcodeのは言う悪いレポートを私に恩返し:スウィフトperformSegueWithIdentifierスレッド

このアプリケーションは、エンジンの破損や奇妙なクラッシュにつながることができた背景 スレッドから自動レイアウトエンジンを変更しているが。この は、将来のリリースで例外を発生させます。

これは私の短いコードである:私は私が例の場合のためのビューに何かを行うことができないことを使用している場合ので、私は方法dispatch_get_main_queueを使用できないことを正確にしたい

override func viewDidLoad(){ 
    super.ViewDidLoad() 
    let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
    dispatch_async(dispatch_get_global_queue(priority, 0)) { 
    while(true){ 
     if(serial.connectedPeripheral == nil){ 
     self.GoBackToBLE() 
     } 
    } 
    } 
} 

私はそれを押すことができるようにしたいと思うボタンを持っていると私はdispatch_get_main_queueメソッドを使用することはできません。

提案がありますか?あなたは物事が2つのパートに実行するように分割することができdispatch_get_global_queue にUIに関連した何もしてはならないおかげでたくさん

答えて

1

、1はUI他方に関連しては、ネットワーク呼び出し/計算など

override func viewDidLoad(){ 
    super.ViewDidLoad() 
    let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
    // do the ui stuff here 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {() -> Void in 
     // do everything which is not ui 
    }) 
    }) 
} 
をやっています
+0

したがって、実行セグを使用してビューを変更する必要がある場合は、そのメソッドをmain_queueの右側に配置する必要がありますか? – Davide95

+0

はい、GoBackToBLEには何がありますか?この関数を2つの異なる関数に分割することができます。 –

+0

Gobacktobleは、私がこの機能に変更ビューを使用しようとした機能だけです。セグのメソッドの準備だけです! – Davide95

関連する問題