當我們建立一個工程的時候,在Supporting FIles檔案下會看到一個以 -Prefix.pch結尾文 件的檔案,pch全稱是“precompiled header”,也就是先行編譯標頭檔,該檔案裡存放的工程中一些不 常被修改的代碼,比如常用的架構標頭檔,這樣做的目的提高編譯器編譯速度。我們知道當我們修改一 個工程中某個檔案代碼時候,編譯器並不是重新編譯所有所有檔案,而是編譯改動過檔案的,假如pch 中某個檔案修改了,那麼pch整個檔案裡包含的的其他檔案也會重新編譯一次,這樣就會消耗大量時間 ,所以它裡面添加的檔案最好是是很少變動或不變動的標頭檔或者是先行編譯的程式碼片段;
在新 建一個工程時,pch尾碼檔案裡代碼是
#import <Availability.h> #ifndef __IPHONE_4_0 #warning "This project uses features only available in iOS SDK 4.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #endif
或許你會覺得這先行編譯代碼很少,但是你可以查看一下UIKit.h的定義檔案中
// // UIKit.h // UIKit // // Copyright (c) 2005-2011, Apple Inc. All rights reserved. // #import <UIKit/UIKitDefines.h> #import <UIKit/UIAccelerometer.h> #import <UIKit/UIAccessibility.h> #import <UIKit/UIActivityIndicatorView.h> #import <UIKit/UIAlert.h> #import <UIKit/UIApplication.h> #import <UIKit/UIBarButtonItem.h> #import <UIKit/UIBarItem.h> #import <UIKit/UIBezierPath.h> #import <UIKit/UIButton.h> #import <UIKit/UIColor.h> #import <UIKit/UIControl.h> #import <UIKit/UIDataDetectors.h> #import <UIKit/UIDatePicker.h> #import <UIKit/UIDevice.h> #import <UIKit/UIDocument.h> #import <UIKit/UIDocumentInteractionController.h> #import <UIKit/UIEvent.h> #import <UIKit/UIFont.h> #import <UIKit/UIGeometry.h> #import <UIKit/UIGestureRecognizer.h> #import <UIKit/UIGraphics.h> #import <UIKit/UIImage.h> #import <UIKit/UIImagePickerController.h> #import <UIKit/UIImageView.h> #import <UIKit/UIInterface.h> #import <UIKit/UILabel.h> #import <UIKit/UILocalNotification.h> #import <UIKit/UILocalizedIndexedCollation.h> #import <UIKit/UILongPressGestureRecognizer.h> #import <UIKit/UIManagedDocument.h> #import <UIKit/UIMenuController.h> #import <UIKit/UINavigationBar.h> #import <UIKit/UINavigationController.h> #import <UIKit/UINib.h> #import <UIKit/UINibDeclarations.h> #import <UIKit/UINibLoading.h> #import <UIKit/UIPageControl.h> #import <UIKit/UIPageViewController.h> #import <UIKit/UIPanGestureRecognizer.h> #import <UIKit/UIPasteboard.h> #import <UIKit/UIPickerView.h> #import <UIKit/UIPinchGestureRecognizer.h> #import <UIKit/UIPopoverController.h> #import <UIKit/UIPopoverBackgroundView.h> #import <UIKit/UIPrintError.h> #import <UIKit/UIPrintFormatter.h> #import <UIKit/UIPrintInfo.h> #import <UIKit/UIPrintInteractionController.h> #import <UIKit/UIPrintPageRenderer.h> #import <UIKit/UIPrintPaper.h> #import <UIKit/UIProgressView.h> #import <UIKit/UIReferenceLibraryViewController.h> #import <UIKit/UIResponder.h> #import <UIKit/UIRotationGestureRecognizer.h> #import <UIKit/UIScreen.h> #import <UIKit/UIScreenMode.h> #import <UIKit/UIScrollView.h> #import <UIKit/UISearchBar.h> #import <UIKit/UISearchDisplayController.h> #import <UIKit/UISegmentedControl.h> #import <UIKit/UISlider.h> #import <UIKit/UISplitViewController.h> #import <UIKit/UIStepper.h> #import <UIKit/UIStoryboard.h> #import <UIKit/UIStoryboardPopoverSegue.h> #import <UIKit/UIStoryboardSegue.h> #import <UIKit/UIStringDrawing.h> #import <UIKit/UISwipeGestureRecognizer.h> #import <UIKit/UISwitch.h> #import <UIKit/UITabBar.h> #import <UIKit/UITabBarController.h> #import <UIKit/UITabBarItem.h> #import <UIKit/UITableView.h> #import <UIKit/UITableViewCell.h> #import <UIKit/UITableViewController.h> #import <UIKit/UITapGestureRecognizer.h> #import <UIKit/UITextField.h> #import <UIKit/UITextInput.h> #import <UIKit/UITextInputTraits.h> #import <UIKit/UITextView.h> #import <UIKit/UIToolbar.h> #import <UIKit/UITouch.h> #import <UIKit/UIVideoEditorController.h> #import <UIKit/UIView.h> #import <UIKit/UIViewController.h> #import <UIKit/UIWebView.h> #import <UIKit/UIWindow.h>