如何记录在Objective-C事件循环的单个迭代中发送的每个消息
我想进一步了解Objective-C运行时,并认为这将是一个良好的开端。
这些函数将根据进程的PID将所有消息记录到/tmp中的文件中。在模拟器上很好,但在iDevice上不好。
// Start logging all messages
instrumentObjcMessageSends(YES);
// Stop logging all messages
instrumentObjcMessageSends(NO);
CFRunLoopObserver
不透明类型应该完全按照您的意愿执行。它是
一种在运行循环中的不同点接收回调的通用方法。
在其创建函数中使用activity
参数,以指定需要为观察者提供服务的时间。对于您的情况,这可能是kCFRunLoopEntry
或kCFRunLoopExit
。
您可以从当前的NSRunLoop
、[[NSRunLoop currentRunLoop] getCFRunLoop]
或使用CFRunLoopGetCurrent()
获得CFRunLoopRef
。