Objective-C イベント ループの 1 回の反復で送信されたすべてのメッセージをログに記録するにはどうすればよいですか?
Objective-C ランタイムの理解をさらに深めたいと考えており、これは良いスタートになると思いました。
Objective-C イベント ループの 1 回の反復で送信されたすべてのメッセージをログに記録するにはどうすればよいですか?
Objective-C ランタイムの理解をさらに深めたいと考えており、これは良いスタートになると思いました。
これらの関数は、プロセスの PID に基づいて、すべてのメッセージを /tmp 内のファイルに記録します。シミュレーターには適していますが、iDevice には適していません。
// Start logging all messages
instrumentObjcMessageSends(YES);
// Stop logging all messages
instrumentObjcMessageSends(NO);
不透明なタイプは、CFRunLoopObserver
まさにあなたが望むことをするべきです。それは
実行中の実行ループ内のさまざまなポイントでコールバックを受け取る一般的な手段。
作成関数activity
の引数を使用して、オブザーバーをいつ処理するかを指定します。あなたの場合、これはおそらくまたはのいずれかになります。kCFRunLoopEntry
kCFRunLoopExit
CFRunLoopRef
を使用して、現在のNSRunLoop
、[[NSRunLoop currentRunLoop] getCFRunLoop]
、またはからを取得できますCFRunLoopGetCurrent()
。