【问题标题】:How can I log names of each called class method in Objective-C? [duplicate]如何在 Objective-C 中记录每个调用的类方法的名称? [复制]
【发布时间】:2016-03-10 18:17:13
【问题描述】:

当我想查看对象方法调用的顺序时,我必须像这样记录我实现的每个方法。

- (void)updateTime:(float)time
{
  NSLog(@"%s", __PRETTY_FUNCTION__);

因此我不得不把这段代码放在类的每个方法中,每次调试一个类的时候插入和删除这么多的日志函数调用非常无聊。

那么如何在每个方法调用的类中触发NSLog(@"%s", __PRETTY_FUNCTION__);

编辑:

我最终得到了这段代码。并且在其他任何地方都没有得到回答。

- (BOOL)respondsToSelector:(SEL)aSelector {
    if(aSelector){
        NSLog(@"%@", NSStringFromSelector(aSelector));
    }
    return [super respondsToSelector:aSelector];
}

【问题讨论】:

  • 您是否要求在日志中显示顺序方法调用的堆栈跟踪?
  • @TejaNandamuri 听起来她要求将她的 NSLog 语句自动放置在每个类函数的顶部,而无需将其写入;例如,通过某种代码预处理
  • @Alex 是的。正是

标签: objective-c


【解决方案1】:

您可以使用NSObjCMessageLoggingEnabled=YES 运行您的可执行文件。您可以在 Xcode Schemes 中的 Run 下的 Argument Variables 下进行设置。

你最终会得到类似的输出

    + NSObject NSObject initialize
    + NSNotificationCenter NSObject initialize
    + NSNotificationCenter NSNotificationCenter defaultCenter

更多信息herehere

【讨论】:

  • 我最终得到了这段代码 - (BOOL)respondsToSelector:(SEL)aSelector { if(aSelector){ NSLog(@"%@", NSStringFromSelector(aSelector)); } 返回 [super respondsToSelector:aSelector]; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2015-08-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多