Мы используем очереди отправки для генерации событий таймера.Ниже приведен код, который выполняет задачу:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
if (!timer) return self;
dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), interval * NSEC_PER_SEC, 5 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer,
^{
//Some work…
});
Это работает очень хорошо, за исключением того, что когда мы запускаем профилировщик, мы видим много утечек памяти из-за этих методов:
- dispatch_source_create
- dispatch_source_set_timer
- dispatch_source_set_event_handler
Мы убедились, что таймер освобождается с помощью метода dispatch_release ().
Может кто-нибудь сообщить нам, если мы делаем какую-либо ошибку в приведенном выше коде?А также, если вы можете указать на любой пример генерации события таймера, это будет полезно.