無線客戶端框架設(shè)計(2):項目結(jié)構(gòu)的設(shè)計(iOS篇)
本文附帶源碼:http://down.51cto.com/data/935164
在設(shè)計任何一個框架之前,都應(yīng)規(guī)劃好項目結(jié)構(gòu)。
假定Git作為我們的項目管理工具。我們要建立兩個倉庫,一個用于存放我們的框架,另一個用于存放我們的項目,后者引用前者。
對于iOS而已,大部分開發(fā)者已經(jīng)習(xí)慣于就一個project,所有的功能、頁面都做在上面,倒也沒錯。然而我現(xiàn)在要做的是,要讓我所設(shè)計的框架,脫離于項目而存在,這樣,明天我也許會做另一個項目,但是所使用的框架確是同一個。
為此,iOS需要用到workspace的概念。它相當(dāng)于.NET中的solution文件,在.NET中,我們可以在一個solution中添加多個project,同理,在iOS中,我們也可以在一個workspace中添加多個project。
搭建步驟如下:
1)新建一個空的workspace
選擇 File -> New -> Workspace , 將 Workspace 命名為 YoungHeart。
2)創(chuàng)建框架的project,命名為MyLib。
3)在MyLib中實現(xiàn)幾個方法,build一次。
4)創(chuàng)建項目的project,命名為MyApp
5)在MyApp中添加對MyLib的引用
先在Target中,選中Summary這個Tab,添加libMyLib.a的引用:
然后在Project中,選中Build Settings這個Tab,查找關(guān)鍵字Header Search Path,
在搜索到的結(jié)果中,選中Header Search Path,添加路徑,記得選擇recursive:
添加路徑后效果如下所示:
***,會發(fā)現(xiàn),項目中,多了一個libMyLib.a,將其轉(zhuǎn)移到Frameworks目錄下:
6)在MyApp中使用MyLib的方法
在MyApp的ViewController.m文件中,首先添加對MyLib項目的引用:
#import "MyLib.h"
然后編寫以下代碼:
如果編譯不出錯,就說明添加引用成功了。否則,請檢查1-4步。
同時,如果編譯不出錯,你會發(fā)現(xiàn),在調(diào)試期間,你可以同時調(diào)試MyApp和MyLib兩個項目里面的代碼。而這非常重要。
最終截圖如下:
如果以后對MyLib進(jìn)行了修改,比如,我將add方法的實現(xiàn)修改為
,這時,MyApp是不知道的,仍然返回修改之前的結(jié)果(a1+a2)。這時,我們需要額外做一些事情,才能讓MyApp知道MyLib的修改。步驟如下:
1)刪除MyApp中對libMyLib的引用。
2)對修改過的MyLib項目,先Clean再Build。
3)在MyApp項目中重新添加對MyLib項目的引用。
也許你會覺得麻煩,但是框架一旦穩(wěn)定下來之后,修改就不是那么頻繁了,所以上述那么麻煩的事情不會經(jīng)常去做。而且,一般而言,框架只會由一個人維護(hù),所以只要他每次修改框架并相應(yīng)更新項目后,發(fā)封郵件通知到家更新Git就好了。