了解Objective-C事件循环

时间:2012-09-02 20:10:01

标签: objective-c nsrunloop event-loop

如何记录Objective-C事件循环的单次迭代中发送的每条消息?

我希望进一步了解Objective-C运行时,并认为这将是一个良好的开端。

2 个答案:

答案 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参数指定您希望观察者服务的时间。对于您的情况,这可能是kCFRunLoopEntrykCFRunLoopExit

您可以从当前CFRunLoopRefNSRunLoop或使用CFRunLoopGetCurrent()获取[[NSRunLoop currentRunLoop] getCFRunLoop]