0

Objective-C イベント ループの 1 回の反復で送信されたすべてのメッセージをログに記録するにはどうすればよいですか?

Objective-C ランタイムの理解をさらに深めたいと考えており、これは良いスタートになると思いました。

4

2 に答える 2

5

これらの関数は、プロセスの PID に基づいて、すべてのメッセージを /tmp 内のファイルに記録します。シミュレーターには適していますが、iDevice には適していません。

// Start logging all messages
instrumentObjcMessageSends(YES);

// Stop logging all messages
instrumentObjcMessageSends(NO);
于 2012-09-02T20:50:19.907 に答える
2

不透明なタイプは、CFRunLoopObserverまさにあなたが望むことをするべきです。それは

実行中の実行ループ内のさまざまなポイントでコールバックを受け取る一般的な手段。

作成関数activityの引数を使用して、オブザーバーをいつ処理するかを指定します。あなたの場合、これはおそらくまたはのいずれかになります。kCFRunLoopEntrykCFRunLoopExit

CFRunLoopRefを使用して、現在のNSRunLoop[[NSRunLoop currentRunLoop] getCFRunLoop]、またはからを取得できますCFRunLoopGetCurrent()

于 2012-09-02T20:24:57.560 に答える