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);
也可以