#ios #swift #nsthread
#iOS #swift #nsthread
Вопрос:
- Как сказано в заголовке, как вернуть данные из дочернего потока
- пожалуйста, помогите мне решить эту проблему, большое вам спасибо
.
func showMessage()->String
{
//sign up
user.signUpInBackgroundWithBlock { (successed, error) in
if error == nil
{
dispatch_async(dispatch_get_main_queue(), {
//load UI
self.message = ErrorTypeValue.showMessageWithError(error) as String
})
}else
{
dispatch_async(dispatch_get_main_queue(), {
//load UI
self.showSuccess = true
self.message = self.showSuccessMessage()
})
}
}
return self.message!
}
Комментарии:
1. Эй, непонятно, чего ты здесь добиваешься. Поскольку вы используете асинхронный блок, он не сохраняется для возврата параметра. Он никогда не получит последнее значение, которое вы установили для self.message.
2. » Он никогда не получит последнее значение, которое вы установили для self.сообщение» это то, что я собираюсь решить
3. Хорошо, мой вопрос в том, что вы делаете с возвращаемым значением этого метода. В случае асинхронного выполнения вам нужно использовать блок завершения, а не заставлять функцию возвращать значение.
4. Ваша
showMessage
функция не может вернуть значение. Там вы также должны принять шаблон обработчика завершения. Кроме того, вероятно, неразумно обновлять свойства здесь. Просто передайте обратно сообщение в качестве параметра вашему закрытию обработчика завершения.