0

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

我想进一步了解 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

CFRunLoopObserveropaque 类型应该完全符合您的要求。这是

在运行的运行循环中的不同点接收回调的一般方法。

使用其创建函数activity的参数来指定您希望何时为观察者提供服务。对于您的情况,这可能是or 。kCFRunLoopEntrykCFRunLoopExit

您可以CFRunLoopRef从当前NSRunLoop[[NSRunLoop currentRunLoop] getCFRunLoop], 或使用CFRunLoopGetCurrent().

于 2012-09-02T20:24:57.560 回答