我有一个视图控制器,它会一遍又一遍地重新加载。我希望能够查看正在调用哪些方法,以便我可以看到不断触发重新加载的方法。我知道如果发生错误并且应用程序崩溃,我可以看到调用的内容。但是,在这种情况下没有崩溃。有没有办法监控整个应用程序中调用的所有方法?
问问题
3526 次
3 回答
3
如果您是 XCode 和 Objective C 的新手并且正在寻找轻量级的东西并且您没有大量代码/许多方法,我会说:
NSLog(@"%s",__PRETTY_FUNCTION__);
在每一种方法中。
于 2013-03-07T22:49:35.510 回答
2
使用仪器。以分析模式启动您的代码并选择 CPU 时间工具。当应用程序运行时,Instruments 将定期收集有关每个调用堆栈的信息,这将允许您查看什么调用了什么。(使用“反转调用树”选项查看给定函数的调用者。)
于 2013-03-07T22:43:24.587 回答
1
我使用这个宏:
#define DEBUG 1
#if DEBUG
# define NLog(fmt, ...) printf("%s\n", [[NSString stringWithFormat:@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:fmt, ##__VA_ARGS__]] UTF8String])
#else
# define NLog(...)
#endif
然后我将我的 Macros.h 包含在我的 Application_Prefix.pch 文件中,以便它在任何地方都可用。在我发布之前,我将 DEBUG 设置为 0,这样所有的 NLogs 都会消失。
所以现在,我不使用 NSLog,而是使用 NLog。输出看起来像这样:
-[ApplicationDelegate applicationDidBecomeActive:]:86 applicationDidBecomeActive called!
该解决方案基于这些较早的帖子:
您可以将 NLog 调用放在几个地方,以查看在视图控制器重新加载之前调用了哪些函数。如果您需要知道触发重新加载的确切函数,最好的办法是放置一个断点并检查调用堆栈,正如其他人提到的那样。
于 2013-03-07T23:28:16.650 回答