Как вернуть данные из дочернего потока

#ios #swift #nsthread

#iOS #swift #nsthread

Вопрос:

  1. Как сказано в заголовке, как вернуть данные из дочернего потока
  2. пожалуйста, помогите мне решить эту проблему, большое вам спасибо

.

     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 функция не может вернуть значение. Там вы также должны принять шаблон обработчика завершения. Кроме того, вероятно, неразумно обновлять свойства здесь. Просто передайте обратно сообщение в качестве параметра вашему закрытию обработчика завершения.