我正在製作一個非常簡單的應用程序來使用GCD來練習多線程。我在我的ViewController類初始化的UIActivityIndicatorView像這樣:UIActivityIndicator不與GCD一起轉動
class ViewController: UIViewController {
var myActivityIndicator:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
以我viewDidLoad中,我添加它作爲一個子視圖到我用下面的代碼的主視圖:
override func viewDidLoad()
{
super.viewDidLoad()
myActivityIndicator.center = view.center
view.addSubview(myActivityIndicator)
}
然後,當我的按鈕被點擊,我有一個IBAction通過在稍後打印一條簡單消息來處理事件。下面是該代碼:
@IBAction func doSomething(sender: AnyObject)
{
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0))
{
self.myActivityIndicator.startAnimating()
sleep(3)
print("This has been accessed on another thread")
dispatch_async(dispatch_get_main_queue())
{
self.myActivityIndicator.stopAnimating()
}
}
}
它好像self.myActivityIndicator.startAnimating()是沒有得到所謂的,但是當我把該行的代碼在viewDidLoad中,它工作得很好。
我錯過了什麼?
只需從主隊列中調用myActivityIndicator.startAnimating() –
@LeoDabus哇!我不敢相信我忽略了......謝謝! – doc92606