记录变量值
你不应该在没有像这样的文字格式字符串的情况下调用 NSLog
:
placeholderCopyNSLog(variable); // Dangerous code!
如果变量不是 NSString
,程序将崩溃,因为 NSLog
需要一个 NSString
。
如果变量是 NSString
,它将起作用,除非你的字符串包含%
。NSLog
将解析%
序列作为格式说明符,然后从堆栈中读取垃圾值,导致崩溃甚至执行任意代码 。
相反,始终将第一个参数设为格式说明符,如下所示:
placeholderCopyNSLog(@"%@", anObjectVariable);
NSLog(@"%d", anIntegerVariable);