使用NSLog打印变量,为什么要添加nil


NSString* name = @"abc";
NSLog(name,nil);

谁能告诉我,为什么加一个nil?非常感谢。

NSLog的签名是void NSLog (NSString *format, ...);

所以第一个参数是一个格式而不是一个字面值字符串。第二个(以及后面所有)参数是格式字符串的替换值。

你不应该用你想记录的字符串替换格式字符串。如果您的字符串包含格式说明符,如%d, NSLog将尝试替换它们,但由于您没有输入替换,因此将失败。

当你想记录string时,你应该总是用NSLog(@"%@", string)记录。

使用NSLog打印NSString的正确方法是NSLog(@"%@", name);

这根本不是必要的,但是NSLog期望一个const NSString:

NSLog(@"%@", name);

虽然,只要没有特殊的标志,如%p, %d, %s, %@

NSLog(myString);

也可以

最新更新