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