g.r*_*ion 3 macos objective-c nslog ios
当我尝试使用NSLog时:
NSLog(@"one" @"two" @"three");
Run Code Online (Sandbox Code Playgroud)
这适用于在控制台中打印onetwothree.但是当我尝试使用这样的时候
NSString *s = [NSString stringWithFormat:@"three"];
NSLog(@"one" @"two" s);
Run Code Online (Sandbox Code Playgroud)
以上不起作用,我得到编译时错误"预期')'".我不知道该怎么做.
任何帮助?
PS我试图使用XcodeColors,我必须像上面那样给NSLog提供参数.所以不要回答使用它如下.我知道这很有效.但是我必须像上面那样将参数传递给NSLog.
NSString *s = [NSString stringWithFormat:@"%@ %@ %@", @"one", @"two", @"three"];
NSLog(s, nil);
Run Code Online (Sandbox Code Playgroud)
编辑:
我可以像这样使用NSLog来获得我想要的结果:
NSString *s = @"ss";
NSLog(@"one" @"two" @"%@",s);
Run Code Online (Sandbox Code Playgroud)
这导致了我的另一个问题.我想为NSLog制作一个宏.宏看起来像:
LOG_X(val) NSLog(@"xx" @"yy" @"%@",val @"zz")
Run Code Online (Sandbox Code Playgroud)
现在当以下工作时:
LOG_X(@"one")
LOG_X(@"one" @"two" @"three")
Run Code Online (Sandbox Code Playgroud)
但是以下不起作用
NSString *s = @"one two three";
LOG_X(s);
Run Code Online (Sandbox Code Playgroud)
它给了我同样的错误"预期')'"
如果要打印NSString变量的内容NSLog,则需要将其视为格式化字符串.
所以代替:
NSLog(@"one" @"two" s);
使用:
NSLog(@"one" @"two" @"%@", s);
加成:
您必须插入逗号并val在宏的末尾.它应该看起来像:
#define LOG_X(val) NSLog(@"xx" @"yy" @"%@" @"zz", val).
你不能用变量做到这一点:它与字符串文字一起使用的原因是当你用空格分隔几个文字时,编译器会将它们组合在一个字符串文字中.
您拥有的解决方案(使用3%@说明符的格式字符串)是一个很好的解决方案.您也可以以类似的方式格式化三个值.
| 归档时间: |
|
| 查看次数: |
4360 次 |
| 最近记录: |