2016-02-02 5 views
0

В моем простом коде я хочу, чтобы процесс прерывания выполнялся в очереди global, если условие x == 2 и перейти в основную очередь.Как прерывать процесс очереди в dispatch_async iOS Swift 2.0

Как это сделать?

Дарио Бассо Кардосо

var x = 1 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0)) { 
    x++ 

    if x == 2 { 
     break // error in this part or 
     return // does not work well 
    } 

    // more codes... 
    dispatch_async(dispatch_get_main_queue()) { () -> Void in 
     // execute the main code 
     // with break or not 
     if x == 2 { 
      // verified that break 
     } 

     // next codes 
    } 
} 

ответ

0

Там нет необходимости явно выйти из вашего процесса, когда программа достигает конца своего процесса асинхронной он выходит сам по себе.

Вам нужно думать об этом наоборот. Продолжайте процесс до тех пор, пока что-то нужно вычислить, затем дайте ему исчерпать

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0))  { 
    while x < 2 { 
    x++ 
    } 

    dispatch_async(dispatch_get_main_queue()) { () -> Void in { 
    ... 
    } 
}