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するのは禁止(実装上そーなってて強制クラッシュされる)。てな感じでした。