1
我们使用调度队列来生成定时器事件。以下是它执行任务的代码:生成调度源定时器事件时发生内存泄漏
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()方法释放。
有人能让我们知道我们在上面的代码中是否有任何错误吗?而且,如果您可以指出任何计时器事件生成的例子,这将会有所帮助。
感谢您的答复。我将你的示例代码与我的相比。它看起来几乎相同。我在dealloc中取消并释放,我可以看到被调用。对我来说,定时器事件正常提升,一切正常。问题是,当我运行分析器时,我发现内存泄漏。 – 2011-04-13 05:08:09