iOS項(xiàng)目中常見的文件

每當(dāng)新創(chuàng)建一個新的iOS項(xiàng)目,系統(tǒng)會默認(rèn)幫我們創(chuàng)建一些文件,下面就來扒一扒這些常見文件都是干什么的。
有過iOS項(xiàng)目開發(fā)經(jīng)驗(yàn)的人都知道:Xcode 6 以后版本的系統(tǒng)生成文件和之前有很大變化,系統(tǒng)取消了一些默認(rèn)生成的文件,這里主要來講Xcode 6 前后的區(qū)別,以便更好的了解這些系統(tǒng)文件。
如圖分別為Xcode 6 前后版本生成的項(xiàng)目文件對比:

Paste_Image.png

透過對比可發(fā)現(xiàn)Xcode 5/6 生成的項(xiàng)目有如下區(qū)別:
1.Xcode 6 之前有Frameworks文件夾【之后取消了】
2.Xcode 6 之前根據(jù)項(xiàng)目名稱命名【之后直接以info命名】
3.Xcode 6 之前項(xiàng)目自動生成一個以項(xiàng)目名命名的PCH文件【之后直接取消了】

下面分別介紹這幾個文件

  1. info.plist
    在Xcode 6 之前以項(xiàng)目名稱命名
    Xcode 6 之后直接叫info.plist

info.plist是iOS項(xiàng)目的項(xiàng)目配置文件,它里面配置了項(xiàng)目的基本信息:

Paste_Image.png

從上圖可以看到info.plist文件實(shí)際上是一個Dictionary , 內(nèi)部是根據(jù)不同的key 來設(shè)置對應(yīng)的屬性。
我們可以修改對應(yīng)的key對應(yīng)的屬性值來達(dá)到修改項(xiàng)目配置信息的目的。

注意:
info.plist 展示成這樣是由Xcode解析過的。他真實(shí)的key并不是我們看到的那個。真實(shí)的key 我們可以通過進(jìn)入源代碼看:

Paste_Image.png

// 通過代碼獲取對應(yīng) key 的值

NSString *currentVersion = [[NSBundle mainBundle].infoDictionary valueForKey:@"CFBundleShortVersionString"]; 
NSLog(@"當(dāng)前版本號 :%@" ,currentVersion);```

2.pch文件
PCH文件是Xcode項(xiàng)目中的預(yù)編譯文件。其中的內(nèi)容在項(xiàng)目編譯之初最先編譯,編譯完成之后整個項(xiàng)目共享。
PCH作用如下:
存放一些公用的宏
防止一些公用頭文件
自定義LOG

**PCH文件在Xcode 6 之后的使用**

由于Xcode 6 之后取消了pch文件,說明Apple不在推薦使用。如果項(xiàng)目需要我們可以通過自己創(chuàng)建PCH文件來使用,步驟如下:

創(chuàng)建新文件-> Other -> PCH File

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1907575-7c42b50f96c7138e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

配置預(yù)編譯文件及相應(yīng)路徑: Build Settings -> Prefix 修改配置信息:

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1907575-7bd98ebe50c7bee9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

自定義LOG
```// 宏里面可變參數(shù):... // 函數(shù)中可變參數(shù): __VA_ARGS__ #ifdef DEBUG // 調(diào)試階段 #define XYLog(...) NSLog(__VA_ARGS__) #else // 發(fā)布階段 #define XYLog(...) #endif
PCH規(guī)范,區(qū)分項(xiàng)目文件
PCH 是項(xiàng)目中的預(yù)編譯文件,相當(dāng)于是把文件中的內(nèi)容復(fù)到整個項(xiàng)目中,為防止項(xiàng)目使用C語言進(jìn)行混編,C語言的文件中不支持OC特性,我們應(yīng)該區(qū)分開,在pch中添加如下宏```
```#ifdef __OBJC__ /* OBJC */ 中間添加對應(yīng)代碼 #endif /* OBJC */ ``` <br> ```為防止PCH文件的重復(fù)引入,應(yīng)該添加如下宏``` ```objc #ifndef PrefixHeader_pch /* PrefixHeader_pch */ #define PrefixHeader_pch 中間添加對應(yīng)代碼 #endif /* PrefixHeader_pch */```
最終如下:

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1907575-a68187212a651741.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3. Frameworks文件夾

Frameworks是系統(tǒng)默認(rèn)引入的框架。

在Xcode 6 之前需要開發(fā)者手動導(dǎo)入框架,F(xiàn)rameworks文件夾中的是最常用的Foundation、UIKit等基礎(chǔ)框架,當(dāng)開發(fā)者需要導(dǎo)入其他框架的時候也會導(dǎo)入到里面Xcode 6 之后系統(tǒng)不再生成此文件夾,項(xiàng)目中用到的一些基礎(chǔ)框架系統(tǒng)會默認(rèn)在用的時候加載。當(dāng)開發(fā)者需要導(dǎo)入其他框架的時候也會生成Frameworks文件夾并導(dǎo)入到里面

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1907575-6c7eb88b192f5008.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容