下面是之前大家會用的解決控制台log輸出的方式
Xcode8裡邊 Edit Scheme-> Run -> Arguments, 在Environment Variables裡邊添加 OS_ACTIVITY_MODE = Disable 環境變數 ,這個相信大家都會.
使用改變Xcode系統模板的方式
先介紹幾個c函數
/** *getenv(取得環境變數內容) *定義函數 char * getenv(const char *name); *函數說明 getenv()用來取得參數name環境變數的內容。 *參數說明 *name為環境變數的名稱,如果該變數存在則會返回指向該內容的指標。 *環境變數的格式為name=value。 *傳回值:執行成功則返回指向該內容的指標,找不到符合的環境變數名稱則返回NULL。 */- (void)getenv_test:(char *)env_name{ if(getenv(env_name)) { printf("%s's value = %s",env_name,getenv(env_name)); }}/** *putenv(改變或增加環境變數) *定義函數 int putenv(const char * string); *函數說明:putenv()用來改變或增加環境變數的內容。 *參數 *string的格式為name = value, *如果該環境變數原先存在,則變數內 容會依參數string改變,否則此參數內容會成為新的環境變數。 *傳回值:執行成功則返回0,有錯誤發生則返回-1。 */- (void)putenv_test{ char *env_name = "test_two"; if(putenv(env_name) == 0) { printf("%s = %d",env_name,putenv("test_two = two")); }}/** *unsetenv(移除環境變數) *定義函數 unsetenv(const char *string); *函數說明:unsetenv()用來改變或增加環境變數的內容。 *參數 *string為環境變數的名稱, *如果該環境變數原先存在,則移除該環境變數。 *傳回值:執行成功則返回0,有錯誤發生則返回-1。 */- (void)unsetenv_test{ char *env_name = "test_one"; if(unsetenv(env_name) == 0) { printf("%s is unseted = %s",env_name,unsetenv(env_name) == 0 ? "yes" : "no"); }}/**setenv(改變或增加環境變數) *定義函數 int setenv(const char *name,const char * value,int overwrite); *函數說明 setenv()用來改變或增加環境變數的內容。 *參數 name為環境變數名稱字串。 *參數 value則為變數內容。 *參數 overwrite用來決定是否要改變已存在的環境變數。 如果overwrite不為0,則改變環境變數原有內容,原有內容會被改為參數value所指的變數內容。 如果overwrite為0,且該環境變數已有內容,則參數value會被忽略。 *傳回值 執行成功則返回0,有錯誤發生時返回-1*/- (void)setenv_test{ char *env_name = "test_one"; char *env_value = "ooops"; if(setenv(env_name,env_value,1) == 0) { printf("%s is seted = %s",env_name,setenv(env_name,env_value,1) == 0 ? "success" : "failed"); }}
我們要修改的模板如下的路徑中
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/
Library/Xcode/Templates/Project\ Templates/iOS/Application/Cocoa\ Touch\ Application\ Base.xctemplate
開啟檔案,在檔案中搜尋如下代碼
<key>main.m:main:UIApplicationMain</key> <string>@autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));}</string>
將其改為
<key>main.m:main:UIApplicationMain</key> <string>@autoreleasepool { /* * 此行代碼是增加的代碼 */ setenv("OS_ACTIVITY_MODE", "DISABLE", 1); return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));}
其目的是為了,在建立的Xcode項目的入口檔案中增加添加環境變數的操作
效果如下
//// main.m// environment_variable//#import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char * argv[]) { @autoreleasepool { setenv("OS_ACTIVITY_MODE", "disable", 1); return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}
總結
以上就是這篇文章的全部內容了,至此解決Xcode8建立新項目,控制台會出現奇葩log的小缺陷!希望能對各位遇到這個問題的朋友們能有所協助,如果有問題大家可以留言交流。