如何记录Objective-C事件循环的单次迭代中发送的每条消息?
我希望进一步了解Objective-C运行时,并认为这将是一个良好的开端。
答案 0 :(得分:5)
这些函数将根据进程的PID将所有消息记录到/ tmp中的文件中。在模拟器上很好,但在iDevice上却没有。
// Start logging all messages
instrumentObjcMessageSends(YES);
// Stop logging all messages
instrumentObjcMessageSends(NO);
答案 1 :(得分:2)
CFRunLoopObserver
opaque类型应该完全符合您的要求。它是
在正在运行的运行循环中的不同点接收回调的一般方法。
使用its creation function activity
参数指定您希望观察者服务的时间。对于您的情况,这可能是kCFRunLoopEntry
或kCFRunLoopExit
。
您可以从当前CFRunLoopRef
,NSRunLoop
或使用CFRunLoopGetCurrent()
获取[[NSRunLoop currentRunLoop] getCFRunLoop]
。