include把整個(gè)文件包含進(jìn)來。
import是在此基礎(chǔ)上增加了防止重復(fù)編譯的預(yù)編譯宏。
具體如下:
ifndef CommonHeaders_pch
define CommonHeaders_pch
endif
import雖然能夠防止在循環(huán)引用的情景下出現(xiàn)重復(fù)引用的問題,但是在非循環(huán)引用的情景下仍然不能解決在整個(gè)工程被多個(gè)不同的.m文件引用的問題。這樣同樣的代碼被多次包含致使整個(gè)工程的代碼有了額外的增長從而導(dǎo)致編譯時(shí)間變長。
預(yù)編譯頭文件瓦胎,預(yù)編譯的意思就是不占用編譯時(shí)間,在編譯之前解決尤揣。
主要方式是PCH文件搔啊,不過這會(huì)引出幾個(gè)問題。
1北戏、有些.m文件并不需要某些頭文件负芋,那就沒有必要把該頭文件暴露給它,我認(rèn)為這是最大的問題嗜愈。
2旧蛾、書上說它難以定位錯(cuò)誤莽龟,這一點(diǎn)我持懷疑態(tài)度,因?yàn)槲覜]有想到出現(xiàn)此種弊端的情景锨天。
module模塊
首先書中引入了一個(gè)沒有被解釋的概念——自包含
我在讀到這樣的文字的時(shí)候我就想罵作者毯盈,別老說一些似是而非的概念,你要明確表達(dá)你的意思好不好绍绘。
自包含:字面意思奶镶,自己包含自己,那就是說不包含別人唄陪拘,就是獨(dú)立的。
通過這篇文章我并不知道模塊到底是個(gè)什么東西纤壁,因?yàn)闀袥]有給出明確完整的定義左刽,反正它帶來的主要好處就是如下幾點(diǎn):
1、編譯速度比上面那你種方式都快酌媒。
2欠痴、它能幫你自動(dòng)連接庫。
3秒咨、不會(huì)引入多余的庫喇辽。
其他的都說得太簡單了。
現(xiàn)在版本的XCode是默認(rèn)開始module模式的雨席,不過也可以自己手動(dòng)設(shè)置菩咨。
是否自動(dòng)鏈接framework也是可控的。
具體寫法是把#import <MapKit>改成@import MapKit陡厘,不過其實(shí)也不用抽米,因?yàn)榫幾g器會(huì)幫你做這件事。
總結(jié)一下作者的意思就是你趕緊用module吧糙置,你還在等啥云茸。