咱们在iOS开发过程当中,咱们时常会使用NSLog
打印到控制台的日志信息进行代码调试,但这样调试的前提是链接上Xcode。
若是进行真机调试但同时又不能链接Xcode的时候,就不能直接在xcode的控制台查看输出日志了,可是程序仍是会执行那些Log的,若是要查看这些日志,咱们就须要把输出日志信息保存到文件中,而后进行查看。数组
标准NSLog
的打印默认是往标准错误(stderr
)进行打印的,咱们只须要修改NSLog
的打印输出路径便可实现日志重定向xcode
#pragma mark - 用户方法,将NSLog的输出信息写入到文件中 /* 将NSlog打印信息保存到Document目录下的文件中 */ - (void)redirectLogToDocumentFolder { // 获取沙盒路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentDirectory = [paths objectAtIndex:0]; // 获取打印输出文件路径 NSString *fileName = [NSString stringWithFormat:@"myData.log"]; NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName]; // 先删除已经存在的文件 NSFileManager *defaultManager = [NSFileManager defaultManager]; [defaultManager removeItemAtPath:logFilePath error:nil]; // 将NSLog的输出重定向到文件,由于C语言的printf打印是往stdout打印的,这里也把它重定向到文件 freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+", stdout); freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+", stderr); }
在AppDelegate
的application:didFinishLaunchingWithOptions:
中调用:app
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 重定向Log日志信息到Document文件中 [self redirectLogToDocumentFolder]; return YES; }
到这里还没结束,由于你的Log日志信息已经打印到了真机应用的沙盒文件中,你还须要把它拷贝到你的Mac上进行查看,你就须要设置共享文件配置 :指针
在应用程序的
Info.plist
文件中添加UIFileSharingEnabled
键,并将键值设置为YES
。调试
一旦iOS设备插入到用户计算机,iTunes就会在选中设备的Apps标签中显示一个文件分享区域。设置了文件共享后,用户就能够向该目录添加文件或者将文件移动到桌面计算机中。就是说,设置了文件共享后,一旦设备链接上电脑,能够经过iTune查看指定应用程序的共享文件夹,将文件拷贝到你的电脑上看。
日志
FILE *fp = fopen(文件路径,打开方式);
code
r
: 读,若是文件不存在返回NULL,存在就打开w
: 写,若是文件存在则覆盖,不存在则建立a
: 追加,若是文件存在则追加,不存在则建立r+
: 在r
的基础上,多增长了写的权限w+
: 在w
的基础上,多增长了读的权限a+
: 在a
的基础上,多增长了读的权限t
: 文本文件(默认的),结合有rt、wt、at、rt+b
: 二进制文件,结合有rb、wb、ab、rb+
char ch = fgetc(文件指针);
fputc(字符,文件指针);
fgets(字符数组,长度n,文件指针);
fputs(字符串,文件指针);
fread(保存数据的首地址,每块的大小,多少块,文件指针);
fwrite(数据的首地址,每块的大小,多少块,文件指针);
fscanf(文件指针,格式化控制符,地址列表);
fprintf(文件指针,格式化控制符,参数列表);
freopen(文件路径path, 打开方式mode, 文件指针fp);
stdin
、stdout
和stderr
。其中stdin
是标准输入流,默认为键盘;stdout
是标准输出流,默认为屏幕;stderr
是标准错误流,通常把屏幕设为默认。fclose(文件指针);
orm