0

が、私は私の挙にUIActivityIndicatorViewを使用dispatch_syncモードでは動作しませんが、それは動作しません、次は私のコードです:私はdispatch_syncdispatch_asyncを試してみましたUIActivityIndi​​catorViewが

let globalQueueDefault = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0) 

    dispatch_sync(globalQueueDefault){ 

     self.activityIndicatorView.hidden = false 
     self.activityIndicatorView.startAnimating() 

      self.connect() 

      sleep(6) 
      dispatch_sync(globalQueueDefault) {() -> Void in 

       self.activityIndicatorView.stopAnimating() 
       self.activityIndicatorView.hidden = true            
      } 
    } 

...しかし、それはしていません作業。

答えて

3

このキューを使用する場合は、バックグラウンドでコードを実行するように求められますが、UIコードはメインスレッドでのみ実行する必要があります。

あなたが期待どおりに動作しなければならないとして、メインスレッドに戻ってそのコードを配置します

dispatch_async(dispatch_get_main_queue(), {() -> Void in 

}) 

にactivityViewラッピング。

改訂コードが

ようになるはずですglobalQueueDefault = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT、0)

dispatch_async(dispatch_get_main_queue(), {() -> Void in 

    self.activityIndicatorView.hidden = false 
    self.activityIndicatorView.startAnimating() 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { [weak self]() -> Void in 
     self?.connect() 

      sleep(6) 

    }) 

    dispatch_async(dispatch_get_main_queue(), {() -> Void in 

     self.activityIndicatorView.stopAnimating() 
     self.activityIndicatorView.hidden = true            
    } 
} 
+0

は、あなたの答えをありがとう、私はあなたのコードを試してみました、私はfollow'dispatch_sync(globalQueueDefault){ self.activityIndi​​catorView.hidden = falseを self.activityIndi​​catorView.startAnimating() self.connect()のようにそれを考えます 睡眠(6) dispatch_sync(dispatch_get_main_queue()){() - self.activityIndi​​catorView.stopAnimatingで>ボイド() self.activityIndi​​catorView.hidden =真 }} ' – user2262304

+0

こんにちは、私はあなたのコードを試みたが、それ動作しません、 'self.connect()'もうまくいきません、私はcod eは死んだブロックに....? – user2262304

+0

改訂を確認してください – SeanLintern88

0

UIKitには、一般的に、メインスレッドから扱ってみましょう。ですから、あなたのUIを更新しようとするときは、以下のようにメインスレッドにUI関連のコードを入れなければなりません。

dispatch_async(dispatch_get_main_queue(), ^{ 
     // All UI related code goes here... 
     // I am adding few part of your code here.. Please update this according to your requirement. 
     self.activityIndicatorView.stopAnimating() 
     self.activityIndicatorView.hidden = true 
     }); 
+0

あなたの答えをありがとうございます – user2262304

+0

あなたの答えをありがとう、あなたの答えは正しいですが、 SeanLintern88 SeanLintern88は私に詳細を与える、私は彼をupvote、私はあなたに次回upvoteします、ありがとうもう一度答えてください:) – user2262304

関連する問題