私がしていることの1つは次のとおりです。
-(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前後でホバリングし、それらのスレッドがすべて終了したとしても、決して下がらないことです。
どういうわけか自己の一部。OtherGrabbingIndicator+=1; 「リーク」され、self.OtherGrabbingIndicator-=1と一致しません。どうしてそのリークが起こるのだろうか?