2017-01-31 7 views
-1

タイトルとして、ユーザーがボタンを何回でもクリックすると、uilabelがその番号に更新され、アプリはapiを呼び出して番号を送信しますサーバー。 apiが呼び出されている場合を除いて、すべてうまく動作します.Uilabelは2〜5秒間ハングし、ユーザーがボタンを押しても更新されません。私はバックグラウンドでapiを呼び出して、メインキューのUIを更新しようとしましたが、動作しますが、1〜3秒の間は少しでもハングします。私が数をサーバーに投稿する必要がある理由は、多数のユーザーがボタンを同時に押すことになり、ラベルがすべてのユーザーの合計に更新されるためです。目的c APIが呼び出されたときにUIlabelがしばらくハングしている

フロー:ユーザーが望むだけ多くのボタンを押すと、ユーザーがボタンを何回押したか、5秒ごとにAPIが呼び出されてカウントがポストされ、uilabelがその番号を更新します再び。

この問題を修正または改善する提案がありますか?あなたのプロセスが起動して、プロセスの完全な一方で隠しながらローダー(activityIndi​​cator)を追加する必要が

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
[MyApiManager postHitCount:hitCountModel block:^(id object, NSError *error) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self setUpCount]; 
    }); 

    if ([self checkError:error]) 
     return; 
}]; 
}); 
+4

を任意のものをやり取りすることはありませ働いている間、あなたはいくつかのコードをポストする必要があることを管理する必要があります。 – AdamPro13

+3

バックグラウンドスレッドでapiを実行し、メインスレッドでuiを更新します。私はあなたがハングアップの原因となるメインスレッドでAPIを呼び出してUIを更新していると思います – Vinodh

答えて

0

をありがとうございます。

そして、あなたは私たちが何をやっている参照プロセスは、ユーザが現在のビューに

// Start here 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
[MyApiManager postHitCount:hitCountModel block:^(id object, NSError *error) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self setUpCount]; 
     // stop here 
    }); 

    if ([self checkError:error]) 
      // stop here 
     return; 

}]; 
}); 
関連する問題