打印函数(NSLog和NSLogv)
Foundation框架提供了两个记录日志函数,NSLog和NSLogv,使用它们可以将输出结果记录到系统日志设备中。
NSLog函数使用很多,本文主要介绍下NSLogv的使用。
与NSLog函数类似,NSLogv也会将错误消息记录到系统日志设备中,它与NSLog函数的区别是它支持变量参数列表。
比如下面代码的实现,就会发现使用NSLog函数是做不到“打印变量参数列表”:
#import <Foundation/Foundation.h> void printArgs(int numArgs, ...); int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); printArgs(3, @"Mery", @"Hati", @"Ganta"); } return 0; } void printArgs(int numArgs, ...) { va_list args; va_start(args, numArgs); va_end(args); NSMutableString *format = [[NSMutableString alloc] init]; [format appendString:@"Arguments:"]; for (int ii = 0; ii < numArgs -1; ii++) { [format appendString:@"%@, "]; } if (numArgs > 1) { [format appendString:@"%@"]; } NSLogv(format, args); }
自定义的 printArgs 函数中,第二个参数是一个变量列表(由变量参数标记...设置),表示的是可以接受任意个数的参数。
上面程序运行结果如下: