Why is it necessary to call dispatch_group_leave the same number of times as dispatch_group_enter?
こんなコードを試してみると、実際クラッシュ (要ARC)。
/* test.m */ #include <dispatch/dispatch.h> int main() { { dispatch_group_t group = dispatch_group_create(); dispatch_group_enter(group); //dispatch_group_leave(group); } return 0; }
dispatch_groupはdispatch_semaphore使ってて、dispatch_semaphoreはsignalとwaitの呼び出し回数が揃ってない状態でdispatch_releaseするのは禁止(実装上そーなってて強制クラッシュされる)。てな感じでした。