1. 程式人生 > >IOS如何在當前工程中匯入另一個工程檔案

IOS如何在當前工程中匯入另一個工程檔案

可能很多大牛都見過FaceBook的three20框架的原始碼,但是不知道大家有沒有對它裡面的工程之間的相互引用,相互呼叫產生過一些興趣和疑問,如下圖:

由於目前公司正在做一個類似three20的app框架,我的兩位ios大牛使出自己的各種絕技、大招,現在終於做出了一個初期的版本,我因為經驗略顯骨幹,所以沒怎麼瞎摻和,但就耳濡目染也學到了很多東西,我就把自己學到這個關於專案之前聯調,以及在專案中編輯新的framework的東西,總結並分享給大家。 我還是以問題的方式來解答吧,順序是時間順序 一,如何將兩個專案整合到一個專案下(圖1)        可能你試過直接在一個專案裡面直接把另一個專案拖進來,也試過add File..這些東西,但是最終可能還是沒能完成,那麼,到底要怎麼做呢?
       首先,在進入到你當前專案的路徑下,把需要新增的工程/framework手動拷貝到這個目錄。        第二步,在Xcode上面開啟當前專案,在側邊欄點選最左下角的“+”按鈕,選擇Add Files to “”命令,彈出框,選擇要加進來的工程/framework的工程檔案新增,如圖2

完成!這時,已經能夠看到要新增的東西已經在我們的專案目錄下了(圖1)。 新增完成之後,我們試著改動一下新加入的專案的內容,比如把它程式碼改出點問題,比如下圖


本來正常情況下,第12行會報錯,可是現在沒有,說明新加入的專案還沒有和當前專案產生關聯。 二,如何讓新加入的專案和當然專案產生關聯呢?
       如圖4開啟當前專案的Build Phases,再開啟該介面下的Link Binary With Libraries,把新新增的專案的Products資料夾下的“.a”或者”.app”檔案拖到Link Binary With Libraries當中,然後編譯。

這時,之前我們在圖3所示位置新增的非法的程式碼就會報錯了,這時,就說明我們新加入的專案已經和當前專案產生了關聯。


當我們和新加入的專案產生了關聯之後,我們可能想去呼叫或者使用裡面的累或者方法,首先我們把新加入專案的一個頭檔案“TestFrameworks.h”引入當前專案的AppDelegate當中,這時我們又看到了報錯!編譯器說他沒有發現這個標頭檔案在哪裡!?



可是我們不是已經產生關聯了嗎?原來,還不僅僅如此,我們還需要新增引入標頭檔案的路徑(path); 三,如何讓當前專案在引用加入專案的標頭檔案是不報錯?        我們需要這樣做:        開啟當前專案的Build Settings,修改它的Header Seach Path ,如圖7

Header Seach Path 裡面的路徑應該為新加入專案的Products資料夾下,“.a”或者“.app”檔案的路徑下的,include資料夾裡面的資料夾的路徑下,如圖8


新增完成後,再編譯,發現之前的報錯已經默默的消失了。 到這裡,我要說的東西已經完成了90%,所以,我還有一些東西要說。 往往,在我們完成上面這些步驟之後,我們可能還會在新加入的專案中新增新的檔案,來實現一些新的功能,或者結構上的更改,這時我們還會碰到之前的錯我,提示我們,有一些檔案找不到,無法引入,而這些檔案,都是我們剛剛新增的。        Header Link Path都已經修改到相應路徑下,為什麼還會有這樣的錯誤呢?這給原因我也不能解釋,但是我知道怎麼去解決。

  選擇編譯新加入的專案(真機模式),如圖10:

在新加入專案的Build Phases下,開啟Copy Files 點選相應的左下角的“+”號,在彈出框裡面輸入“.h”,這時就會看到所有未加入到include檔案的標頭檔案,然後選擇新增。如圖11

這樣新加入的檔案的標頭檔案也就正常引入到專案了,我們在新加入的類TestFramework設定斷點,然後執行,發現確實已經被引用,如同12

轉自:http://www.th7.cn/Program/IOS/201504/433337.shtml