2016-08-13 9 views
-2

я пытаюсь создать функцию, вернуть статус Интернета в Bool:Ожидания фонового потока для завершения перед возвращением функции

func isConnectedToNetwork()->Bool{ 
    var InternetStatus = Bool() 
    RealReachability.sharedInstance().reachabilityWithBlock { (status:ReachabilityStatus) in 
     switch status { 
     case .RealStatusNotReachable: 
      InternetStatus = false 
     default: 
      InternetStatus = true 

     } 
    } 
    return InternetStatus 
} 

Но у меня есть проблема, RealReachability.sharedInstance().reachabilityWithBlock {} работы в фоновом потоке, и возвращение функции до фонового потока полный.

Как дождаться результата фоновой нити перед возвратом функции?

+2

Вы не можете. Это должен быть наиболее часто задаваемый вопрос iOS. Перед тем, как задать вопрос, выполните поиск в Stack Overflow. Найдите _asynchronous_. См., Например, мой ответ здесь: http://stackoverflow.com/a/24520296/341994 – matt

+1

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что его спрашивали и много раз отвечали на Stack Overflow. – matt

+0

матовый, ты ошибаешься! Я могу сделать это с помощью семафоров! Пожалуйста, не голосуйте, чтобы закрыть эти вопросы. – Dmitry

ответ

3

Не ждите, расскажите.

Используйте обработчик завершения, который вызывается, когда асинхронная задача была завершена

func isConnectedToNetwork(completion:(Bool -> Void)) { 
    RealReachability.sharedInstance().reachabilityWithBlock { (status:ReachabilityStatus) in 
     switch status { 
     case .RealStatusNotReachable: 
      completion(false) 
     default: 
      completion(true) 
     } 
    } 
} 

и называет его

isConnectedToNetwork { success in 
    print(success) 
    // do something with the success value 
} 
+0

vadian, не нужно использовать обработчик завершения ... Просто нужно использовать семафоры ...! Но спасибо за ответ! – Dmitry

+1

@ Семафоры с Димитрий - довольно плохая привычка программирования. В этом случае. – vadian

+0

возможно ... но он отлично работает – Dmitry

Смежные вопросы