为什么不工作NSOperationQueue.mainQueue?

时间:2016-05-06 16:57:18

标签: swift nsoperationqueue

我有这段代码

    @IBAction func joinButtonTouch(sender: AnyObject) {
    NSOperationQueue.mainQueue().addOperationWithBlock({
        self.joinButton.backgroundColor = UIColor(red: 0/255, green: 122/255, blue: 255/255, alpha: 1.0)
        self.activityIndicator.startAnimating()
        self.resultLogIn.text = "Checking data..."
        })


    var response = NetworkManager.sharedInstance.SendRequest("<Command=LogIn><Login=\(loginTextField.text!)><Password=\(passwordTextField.text!)>")
}

我希望activityIndicator运行 BEFORE 启动SendRequest方法。但这没效果。为什么? activityIndicator完成时SendRequest正在运行。

1 个答案:

答案 0 :(得分:0)

您正在使用SendRequest屏蔽主线索。您还安排了操作以启动指示器,但它在当前正在发生的事情之后排在队列中,因此在您释放主线程之后它才会运行。

因此,不要将指示符更改放入操作中,将SendRequest置于操作中并在不是主要的队列(即后台线程)上执行它。然后一切都会顺利进行,用户会很高兴。