2016-04-27 1 views
0

j'ai ce type de problème:Swift - performSegueWithIdentifier en fil

Avec mon application je peux connecter mon iPhone avec un appareil BLE donc quand je connecte leur ensemble, je suis transporté dans une autre vue . Dans cette vue, je dois toujours vérifier si je suis encore connecté dans un fil func. Si ma connexion est perdue, je dois appeler la méthode performSegueWithIdentifier. Mais ... Quand je le fais, xCode me redonner un mauvais rapport qui dit:

Cette application modifie le moteur autolayout d'un fil fond , ce qui peut conduire à la corruption du moteur et des accidents étranges. Cette entraînera une exception dans une version ultérieure.

Ceci est mon code court:

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() 
     } 
    } 
    } 
} 

Je tiens à préciser que je ne peux pas utiliser la méthode dispatch_get_main_queue parce que si j'utilise que je ne peux rien faire d'autre dans la vue par exemple si J'ai un bouton que je veux pouvoir appuyer dessus et si j'utilise la méthode dispatch_get_main_queue je ne peux pas.

des suggestions? merci beaucoup

Répondre

1

Vous ne devriez pas faire quoi que ce soit lié à l'assurance-chômage dans dispatch_get_global_queue vous pouvez diviser les choses à exécuter en 2 parties, 1 est liée à l'interface utilisateur autre fait des appels/calculs réseau, etc.

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

Donc, si je dois changer la vue en utilisant la section perform, je dois mettre cette méthode dans la main_queue, n'est-ce pas? – Davide95

+0

oui, mais qu'est-ce qui est dans GoBackToBLE? vous pouvez diviser cette fonction en 2 fonctions différentes. –

+0

Gobacktoble est seulement la fonction que j'ai essayé d'utiliser pour modifier la vue dans cette fonction, il n'y a que la méthode de préparation pour segue! – Davide95