iOS停止运行全局队列

码:

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

我使用调度全局队列每10秒调用一个方法。它工作正常。问题是全局队列也继续在其他控制器上运行。如何阻止此运行?任何帮助将不胜感激。

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

 @property (atomic) BOOL stop; 

function

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