我做的一件事是:
-(void)GrabbingProcess:(void (^)())block;
{
self.OtherGrabbingIndicator +=1;
block();
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
self.OtherGrabbingIndicator -=1;
});
}
每次我想在后台运行可能需要很长时间的东西时,我都会做类似的事情
[Grabclass grab] GrabbingProcess: ^{ //做一些事情抓取数据等 }];
有许多这样的功能和许多这样的数据。例如,起初我会获取所有企业 ID。然后我会在单独的线程上获取有关业务的所有详细信息。
我想知道所有这些线程何时完成并发布合适的通知。
我的解决方案的问题是,一段时间后,self.OtherGrabbingIndicator 的值通常会徘徊在 2 或 3 左右,即使所有这些线程都已完成,也永远不会下降。
不知何故有些 self.OtherGrabbingIndicator +=1; “泄露”并且与 self.OtherGrabbingIndicator -=1 不匹配。我想知道这种泄漏怎么会发生?