咱們在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