Swift - 在线程中执行SegueWithIdentifier

时间:2016-04-27 10:02:29

标签: swift dispatch-async

我遇到了这类问题:

通过我的应用程序,我可以将我的iPhone与BLE设备连接起来,所以当我将他们连接在一起时,我会被转移到另一个视图中。 在这个视图中,我总是要检查我是否已经在线程函数中连接了。 如果我的连接丢失,我可以调用performSegueWithIdentifier方法。 但是......当我这样做时,xCode会给我一个糟糕的报告:

  

此应用程序正在从后台修改autolayout引擎   线程,这可能导致引擎损坏和奇怪的崩溃。这个   将在未来版本中引发异常。

这是我的简短代码:

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,因为如果我使用它我不能在视图中做任何其他事情,例如,如果我有一个按钮我想成为能够按下它,如果我使用dispatch_get_main_queue方法,我就可以。

有什么建议吗?非常感谢

1 个答案:

答案 0 :(得分:1)

您不应该在let result1 = Test(testA: "{\"major\": 1, \"minor\": 2}", testB: "http://google.com") let result2 = result1.toString()! print("result2=\n\(result2)") 中执行与UI相关的任何操作 你可以把事情分成两部分,一部分与UI有关,另一部分正在进行网络调用/计算等。

dispatch_get_global_queue