問題原因
之前也沒有想過這個問題,最近想研究一下音視頻硬編碼的一些問題,然后在看博客的時候,發(fā)現(xiàn)有人提出了,音頻硬編碼的時候
#import <AudioToolbox/AudioToolbox.h>
這句引入頭文件的代碼去掉之后,代碼可以照常編譯運(yùn)行,就質(zhì)問博主寫的是否是音頻硬編碼,下面就來解釋一下,這是為什么?
眾所周知,F(xiàn)oundation和UIKit中定義了iOS中所有對象的基類,要想開發(fā)一個在iOS上運(yùn)行的應(yīng)用,就不可避免的使用它們,但曾幾何時,寫代碼的時候,你是否發(fā)現(xiàn),你再也不用導(dǎo)入Foundation框架了,原因就是Xcode中創(chuàng)建一個新的iOS項(xiàng)目時,有些框架默認(rèn)會被自動包括在內(nèi),已經(jīng)不需要重新導(dǎo)入了。
下面就來分析一下,Xcode是怎么導(dǎo)入這些框架的。
解答:模塊 (Modules)
Modules第一次在Objective-C中公共露面是在2012 LLVM開發(fā)者大會上Apple’s Doug Gregor的一次談話。
Modules封裝框架比以往任何時候更加清潔。不再需要預(yù)處理逐行地用文件所有內(nèi)容替換#import指令。相反,一個模塊包含了一個框架到自包含的塊中,就像PCH文件預(yù)編譯的方式一樣提升了編譯速度。并且你不需要在PCH文件中聲明你要用到哪些框架,使用Modules簡單的獲得了速度上的提升。
一個Modules不僅告訴編譯器哪些頭文件組成了Modules,而且還告訴編譯器什么需要鏈接。這個就解救了你不用你去手動的鏈接框架。這雖然是一件小事,但是能讓開發(fā)更加簡單就是一件好事。
怎樣使用Modules
Modules的使用相當(dāng)簡單。對于存在的工程,第一件事情就是使這個功能生效。你可以在項(xiàng)目的Build Settings通過搜索Modules找到這個選項(xiàng),改變Enable Modules 選項(xiàng)為YES,像這樣:

所有的新工程都是默認(rèn)開啟這個功能的,但是你應(yīng)該在你所有存在的工程內(nèi)都開啟這個功能。
Link Frameworks Automatically:這個選項(xiàng)就是用來開啟或者關(guān)閉自動連接框架功能的,默認(rèn)是開啟的,如果一旦關(guān)閉這個選項(xiàng),你的工程就會報一大堆的錯誤了,用戶可以試一試,關(guān)閉這個功能,然后你必須手動導(dǎo)入一個一個框架,這對于開發(fā)者來說,無疑是一個災(zāi)難性的事件。
總結(jié)
其實(shí)本文要說的重點(diǎn)就是Modules 和 Link Frameworks Automatically,我也只是簡單了解了一下,希望能起到一個拋磚引玉的作用,有心的用戶可以多去了解一下這方面的資料。