在開發過程中,我們經常需要用到NSLog輸出一些信息,甚至有的開發過程,必須在控制臺查看輸出,有經驗的程序員通過控制臺輸出就能知道整個數據交互的一個流程。但是一個發布的程序,里面帶有太多的NSLog輸出,肯定對于App性能有所影響,這時候我們可以使用一個宏定義來處理,在開發的時候使用DEBUG模式,在發布的時候使用RELEASE模式。這樣,發布的App就不會在程序內部做大量的NSLog輸出了。
簡單的代碼如下,
#if?defined(DEBUG)||defined(_DEBUG)
????NSLog(@"測試代碼");
????NSLog(@"Test?Coding");
#endif
上面的#if #endif宏定義的意思就是如果定義了DEBUG,那么就使用NSLog輸出;否則這段代碼直接忽略。有人會疑問這個DEBUG和_DEBUG來自哪里,這個其實不用擔心,這個來自于Xcode的默認設置,我們可以取消DEBUG模式,開啟RELEASE發布模式,如下截圖所示,
選擇Product->Scheme->Edit Scheme,
下圖可以選擇Debug和Release兩種模式,
這里我選擇了Release,那么則默認沒有定義Debug,則上面代碼中#if...#endif之間的輸出NSLog不會執行。這樣就在發布程序的時候,節省了一些硬件設備的資源。
1,Debug和Release版本區別?
進行iOS開發,在Xcode調試程序時,分為兩種方式,Debug和Release,在Target的Setting中相信大家應該看到很多選項都分為Debug和Release,方便我們分別設置,滿足調試和發布的不同需求。
Release是發行版本,比Debug版本有一些優化,文件比Debug文件小 Debug是調試版本,Debug和Release調用兩個不同的底層庫。通俗點講,我們開發者自己內部真機或模擬器調試時,使用Debug模式就好,等到想要發布時,也就是說需要大眾客戶使用時,需要build Release版本,具體區別如下:
一、Debug是調試版本,包括的程序信息更多
二、只有Debug版的程序才能設置斷點、單步執行、使用TRACE/ASSERT等調試輸出語句
三、Release不包含任何調試信息,所以文件小、運行速度快
從這里點擊目標文件生成的路徑進入查看文件
那怎么調Release版本?首先選擇Product一欄>Scheme>Edit Scheme
在Build Configuration中選擇release ,其他都不要動,close ?再編譯一次。當你這里設置Debug時,你build/Run后就是debug版本,相應的,修改成Release模式,出來的就是release版本,這里可以很方便切換。
剛開發時,始終不知道這個的作用,只知道要打包生成APP時,需要用這個,那么到底Archive和Release有什么關系呢?
archive是你要上傳包的時候打包。也就是說Archive只跟APP要上傳到appStore的時候有關,一般情況下,只有在那個時候才會用Archive,可以這么理解。所以Archive也分為Debug和Release兩個,你可以Archive出一個Debug版本的應用也可以Archive出一個Release的應用。直接archive?是系統提供幫助打包的,Archive生成后的文件會小很多。