【问题标题】:How to list all called methods? [closed]如何列出所有调用的方法? [关闭]
【发布时间】:2013-01-01 04:31:08
【问题描述】:

有什么方法可以列出所有调用的方法,就像一个接一个地调用一样?例如,现在我正在做同样的事情,我把 NSLog(@"MethodName");我每一个方法。 我想通过 NSLog 中的自动方式来做到这一点。有可能吗?

【问题讨论】:

  • 没有帮助。应用停止...
  • 它有效,请仔细阅读。 :)
  • 它假设您将断点弹出窗口中的“条件”字段与“操作”字段混淆。将此代码expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) ) 粘贴到“操作->调试器命令”字段中。它有效,我已经检查过。

标签: iphone ios


【解决方案1】:

我想你想要:

printf("%s\n", __PRETTY_FUNCTION__ ) ;

哪个产生(例如)

-[AppDelegate 应用程序:didFinishLaunchingWithOptions:]

或者,您可以使用 dtrace。这个答案应该会有所帮助:https://stackoverflow.com/a/3874726/210171

还要检查https://stackoverflow.com/a/4604249/210171(相同的链接问题)。好像有一个环境变量NSObjCMessageLoggingEnabled可以设置...

【讨论】:

    【解决方案2】:

    创建一个属性'NSMutableArray * calledMethods;`

    并且在你的每个方法中使用

    [self.calledMethods addObject:NSStringFromSelector(_cmd)];

    而且每当你想打印它时 NSLog 它。

    【讨论】:

      【解决方案3】:

      如果你没有太多方法可以使用

      NSLog(@"%@" , NSStringFromSelector(_cmd));
      

      记录他们的名字。这样您就不必每次都手动复制签名。

      【讨论】:

      • 我相信NSLog(@"%s", __func__); 在这种情况下会更好,因为它也会记录类的名称。
      猜你喜欢
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多