ディスパッチ キューを使用してタイマー イベントを生成しています。以下は、タスクを実行するコードです。
dispatch_queue_t キュー = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, キュー); if (!timer) return self; dispatch_source_set_timer(タイマー、dispatch_walltime(NULL、0)、間隔 * NSEC_PER_SEC、5 * NSEC_PER_SEC); dispatch_source_set_event_handler(タイマー、 ^{ //いくつかの作業… });
これは非常にうまく機能しますが、プロファイラーを実行すると、これらのメソッドから多くのメモリ リークが発生します。
- dispatch_source_create
- dispatch_source_set_timer
- dispatch_source_set_event_handler
dispatch_release() メソッドを使用してタイマーが解放されることを確認しました。
上記のコードに誤りがある場合は、誰か教えていただけますか? また、タイマーイベント生成の例を指摘していただけると助かります。