iOS 从 运行 停止全局队列

iOS stop global queue from running

代码:

dispatch_async(
      dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        [ServerAPI API_GetChatList:self
                        withUserId:[self getUserIDFromUserDefaults]
                    withScheduleId:strGroupId
                          withType:@"group"];

        dispatch_async(dispatch_get_main_queue(), ^{
          [self performSelector:@selector(getChatList)
                     withObject:nil
                     afterDelay:10];

        });

      });

我使用 dispatch global queue 为每 10 个调用一个方法 seconds.It 正在工作 fine.The 问题是全局队列在其他控制器中保持 运行 too.How 做我从 运行 停止此操作?如有任何帮助,我们将不胜感激。

你可以保留一个BOOL 属性,在每次调用之前,你检查这个属性。当你想停止时,设置为YES

@property (atomic) BOOL stop;

函数

-(void)getChatList {
   if (self.stop) {
        return;
   }

dispatch_async(
               dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
                   //Do something
                   dispatch_async(dispatch_get_main_queue(), ^{
                       if (!self.stop) {

                           [self performSelector:@selector(getChatList)
                                      withObject:nil
                                      afterDelay:10];
                       }
                   });


               });
}