目标c UIlabel在调用API时会挂起一段时间

时间:2017-01-31 02:33:42

标签: ios objective-c uilabel

作为标题,当用户根据需要多次点击按钮时,uilabel将更新为该号码,应用程序将调用api将该号码发布到服务器。一切正常,除非在调用api时,uilabel将挂起2-5秒,即使用户按下按钮也不会更新。我已经尝试在后台调用api并更新主队列中的ui,它可以工作,但仍会挂起一段时间,如1 - 3秒。我需要将计数发布到服务器的原因是因为会有许多用户同时按下按钮,因此标签将更新为所有用户的总数。

流程:用户按下按钮,根据需要,uilabel将更新为用户按下按钮的次数,每隔5秒将调用一次api来发布计数,uilabel将再次更新该数字

有任何建议可以解决或加强此问题吗?谢谢

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;
 }];
});

1 个答案:

答案 0 :(得分:0)

您需要在流程启动时添加loader(activityIndi​​cator),并在流程完成时隐藏。

您需要在流程正常工作时进行管理,用户不要在当前视图中进行任何交互

// 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;

 }];
});