目标C:方法是否具有被称为上下文的知识?

时间:2010-04-21 02:11:20

标签: objective-c nslog objective-c-runtime

我希望有一个可重用的日志记录方法或函数,它会调出从中调用它的方法的名称。例如:

    - (void)exampleMethod {
        CustomLog(); //Outputs "exampleMethod"
    }

2 个答案:

答案 0 :(得分:2)

函数不知道他们的调用环境(至少不是有用的)。唯一的方法是使用宏代替。在宏内部,您可以访问包含接收器和当前选择器的self_cmd参数,以及包含方法的人类可读名称的__PRETTY_FUNCTION__宏。一个C字符串。

答案 1 :(得分:0)

请参阅How to print out the method name and line number and conditionally disable NSLog?获取此答案的灵感和其他有用的NSLog提示。这就是我想要的:

//place in PCH file
#define ILog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

//use in any file in your project
ILog(@"test");// outputs -[AppDelegate applicationDidFinishLaunching:] [Line 38] test