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