你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS中解決Xcode 8控制台亂碼的方式

iOS中解決Xcode 8控制台亂碼的方式

編輯:IOS開發綜合

下面是之前大家會用的解決控制台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的小缺陷!希望能對各位遇到這個問題的朋友們能有所幫助,如果有問題大家可以留言交流。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved