有谁可以解释NSLog和NSLogv之间的区别?我知道NSLog
用于在控制台中打印数据。但是什么是NSLogv
?
答案 0 :(得分:2)
一般来说,后缀v
表示函数将va_list
作为参数,而不是可变参数列表。
void NSLog(NSString *format, ...);
void NSLogv(NSString *format, va_list args);
这在某些特定情况下非常有用,在这些情况下,您需要“包装”一个采用可变参数的函数。如果你需要它,你就会知道。否则,你可以放心地忽略它。
答案 1 :(得分:1)
NSLog
是varadic function,这意味着它需要可变数量的参数。但有时,程序员会想要在调用NSLog
之前实现自己的varadic包装函数,该函数会执行其他操作。
如果NSLog
是唯一的函数,那是不可能的,因为你不能将一组varadic参数(又名va_list
)传递给另一个varadic函数。
这就是NSLogv
与NSLog
分开存在的原因,NSLogv
只是一个接受可变数量参数并将它们传递给{{1}}的包装器。