IOS .pch

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   使用   strong   

當我們建立一個工程的時候,在Supporting FIles檔案下會看到一個以  -Prefix.pch結尾檔案的檔案,pch全稱是“precompiled header”,也就是先行編譯標頭檔,該檔案裡存放的工程中一些不常被修改的代碼,比如常用的架構標頭檔,這樣做的目的提高編譯器編譯速度。我們知道當我們修改一個工程中某個檔案代碼時候,編譯器並不是重新編譯所有所有檔案,而是編譯改動過檔案的,假如pch中某個檔案修改了,那麼pch整個檔案裡包含的的其他檔案也會重新編譯一次,這樣就會消耗大量時間,所以它裡面添加的檔案最好是是很少變動或不變動的標頭檔或者是先行編譯的程式碼片段;


在建立一個工程時,pch尾碼檔案裡代碼是

[cpp] view plaincopy
  1. #import <Availability.h>  
  2.   
  3. #ifndef __IPHONE_4_0  
  4. #warning "This project uses features only available in iOS SDK 4.0 and later."  
  5. #endif  
  6.   
  7. #ifdef __OBJC__  
  8.     #import <UIKit/UIKit.h>  
  9.     #import <Foundation/Foundation.h>  
  10. #endif  
工程有Debug Version和Release Version,Debug Version是程式開發過程中版本,它包含了所有調試資訊,一些常用的NSLog列印日誌,在程式調試過程工根據我們設定的調試資訊可以看出什麼地方出錯,我們在運行運行一個小程式的時候,會不會首先就想到進行斷點調試呢,應該是首先想著NSLog一下,看看哪個函數方法沒執行,看看是不是哪個數組的值沒取出來。Release Version是發布版本,不列印NSLog可以加快程式運行速度,減少記憶體使用量。   但是到一個大工程中,會有很多很多這樣的NSLog,在我們工程完美啟動並執行時候,發布Release 版本的時候,難道我們去一行行的注釋調NSLog嗎?假如工程現在原來基礎上發布一個version 1.2版本的,我們在修改程式的時候豈不是還把原來注釋給取消,那就很麻煩很麻煩了。

所以,此處用到了巨集指令


上段代碼的意思就是 用巨集指令做一個判斷,如果DEBUG為真,則編譯#ifdef到#endif宏定義,否則編譯器就不編譯;

這個DEBUG在哪設定呢,

在 "Target > Build Settings > Preprocessor Macros > Debug" 裡有一個"DEBUG=1"。


現在我們來做一個測試:

取一個巨集指令放到OSAppDelegate.m的application:didFinishLaunchingWithOptions:方法中,並用同一個NSLog做一個對比;

NSLog(@"%s", __func__);

 debugMethod();



首先設定為Debug模式下,Product-->Edit Scheme

跳轉到這個介面


當我設定Build Configuration成Debug時,打印


當我設定Build Configuration成Release的,列印時


當Run  Test  Profile  Analyze  Archive的時候,都可以根據需要設定Debug和Release兩個模式運行;

所以我們完全可以用一個巨集指令來設定是否列印調試資訊;

#ifdef DEBUG  // 調試階段
#define ZPLog(...) NSLog(__VA_ARGS__)
#else // 發布階段
#define ZPLog(...)
#endif


IOS .pch

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.