如何将NSLog转换为字符串?

时间:2016-05-17 20:56:01

标签: objective-c nslog

我有以下代码,

#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

如何将NSLog输出转换为字符串,以便传入log参数?见下文。

#define DLog(fmt, ...) [MyClass log:NSLogString];

2 个答案:

答案 0 :(得分:1)

你不能“......将NSLog输出转换为字符串”。 NSLog将其输出发送到标准输出。它执行文件操作。

你应该可以使用这样的代码:

void DLog(NSString* format, ...)
{
    va_list params_list;

    //Extract the variable-length list of parameters
    va_start(params_list, format);

    NSString *outputString = [[NSString alloc] initWithFormat: format 
      arguments: params_list];

    //Now do what you want with your outputString

    //Now clean up the var_args.
    va_end(params_list);
}

神奇的是NSString initWithFormat:arguments:方法,它从var_args中提取params_list并返回一个字符串。这就是你想要的。

答案 1 :(得分:0)

这就是你想要的吗?

#define DLog(...) NSLog(__VA_ARGS__)