NSLog宏如果在主线程上则打印出来

时间:2013-12-30 22:51:31

标签: objective-c macros nsthread nslog

我当前的DEB_LOG宏扩展NSLog以打印出记录它的对象,方法和行:

#define DEB_LOG(__FORMAT__,...) NSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)

如果可能,我还想将其扩展为报告是否在主线程

[NSThread isMainThread]

这可能吗?

2 个答案:

答案 0 :(得分:2)

这应该这样做:

#define DEB_LOG(__FORMAT__,...) NSLog((@"%s line %d%s $ " __FORMAT__), \
    __PRETTY_FUNCTION__, __LINE__, \
    ([NSThread isMainThread] ? " (main thread)" : ""), \
    ##__VA_ARGS__)

生成的输出
DEB_LOG(@"%@", @"Hello world");

-[AppDelegate application:didFinishLaunchingWithOptions:] line 20 (main thread) $ Hello world

答案 1 :(得分:1)

当然可以!

看起来像这样:

#define NSLog(__FORMAT__, ...) NSLog((@"%s line %d [Thread:%s] " __FORMAT__), \    
__PRETTY_FUNCTION__, __LINE__, ([NSThread isMainThread] ? "Main" : "Background"), \
 ##__VA_ARGS__)