一、workspace 是什么霍骄?
workspace是Xcode的一種文件群嗤,用來管理工程和里面的文件,一個workspace可以包含若干個工程氏淑,甚至可以添加任何你想添加的文件勃蜘。workspace提供了工程和工程里面的target之間隱式和顯式依賴
關(guān)系,用來管理和組織工程里面的所有文件假残。
二缭贡、workspace 使用場景?
1辉懒、用來管理同一個項目中的不同模塊
可以把在項目中把一些工具類或模塊等放在另一個動態(tài)庫工程中阳惹,然后在主工程中來使用里面的類和方法。
其中一個重要的步驟就是在主項目的Build Settings 里找到Header Search Paths眶俩,添加一項$(SRCROOT)/../BookObtain莹汤,并且設(shè)置為recursive。$(SRCROOT)是當(dāng)前的工程路徑颠印,..是返回上一層纲岭,然后到BookObtain文件夾。使用了相對路徑线罕,為了是項目移動不會影響這個配置止潮,只要主工程和其他工程的相對位置不變,這里的相對位置是固定在同一個文件夾
recursive的意思是預(yù)先的意思钞楼,即這個動態(tài)庫項目要先編譯沽翔,然后再編譯主項目。
三窿凤、詳細介紹
開發(fā)中會有一些常用的類或方法仅偎,或者是某個特定功能的,比如一個自定義的彈框雳殊、一個更容易使用的網(wǎng)絡(luò)請求庫橘沥,可以把它們放到一個單獨的工程里,通過靜態(tài)庫(library夯秃、FrameWork)的方式應(yīng)用到任何其他需要的項目里座咆。就像使用百度地圖sdk那樣痢艺。
現(xiàn)在有一些文章介紹如何構(gòu)建和使用自定義的靜態(tài)庫,但似乎沒有說使用Workspace的介陶。其實本質(zhì)上堤舒,Workspace還是編譯靜態(tài)庫然后給主工程使用,但不用先打開工程A哺呜,編譯出libA.a舌缤,然后把文件拖到工程B,然后再工程B里面使用某残。主工程和它所用到的庫工程是在同一個工作環(huán)境下(估計這就是Workspace的名字意思吧)国撵。配置好了之后,你只需要運行主工程的target,會自動幫你編譯需要的庫玻墅。用過Pods庫應(yīng)該就明白介牙。
好處就是:1.只需要打開一個工作環(huán)境,需要修改澳厢、同步代碼环础,都不需要打開新的項目、新的文件剩拢,讓人可以集中心思在代碼上喳整,在不同的項目里跳來跳去很容易打斷思維的。
2.可以像同一個工程里一樣裸扶,直接點擊方法名查看引用庫項目的代碼框都,否則就要打開另一個項目,然后找到對應(yīng)文件再找到方法呵晨。
3.只要運行自己的項目就行魏保,就會自動幫你編譯庫文件。
下面以一個圖書管理的demo來說WorkSpace的整個操作摸屠。
構(gòu)建一個Workspace
如圖選擇構(gòu)建一個WorkSpace,會生成.xcworkspace文件(跟project放在同一個目錄下)谓罗,以后就通過打開這個文件來打開WorkSpace。打開工程季二,會發(fā)現(xiàn)什么都沒有檩咱,然后我們要添加各個工程(project)。在Xcode文管理文件的面板里胯舷,右鍵選擇添加新文件刻蚯。
當(dāng)然,先要把項目建好桑嘶。這里我建個項目叫test炊汹,然后上面的添加文件,就把項目的test.xcodeproj文件加進來就可以了逃顶。