2014年3月20日 星期四

用 Xcode 建立 Static Library - 重複利用你的程式碼

From:http://www.dotblogs.com.tw/alanjiang/archive/2013/02/26/93251.aspx


在進行開發時,最常遇到的就是相同的功能,會在不同的地方用到。
用 .Net 開發的話,就會將程式包裝成 dll,直接在要使用的專案上加入參考即可。
在開發 iOS 其實也是有方法可以做到的
下面的步驟,會先建立一個 Cocoa Touch Static Library 的專案建立 Static Library,然後再建立一個 Single View Application 的專案來使用建立好的 Library 來進行測試


步驟如下:
一、建立 Cocoa Touch Static Library 專案
1. 開啟 Xcode ,選擇 Framework & Library,建立一個 Cocoa Touch Static LIbrary 專案,名稱為「MyLibrary01」
Image(6)

2. 專案建立完成後,會看到 Xcode 有自動建立「MyLibrary01.h」、「MyLibrary01.m」,直接就實作這兩個檔案來測試吧。
Image(7)
3. 為了測試用,簡單新增個 sayHello 單純輸出字串的 Function
兩個檔案程式碼如下:
MyLibrary01.h

MyLibrary01.m

01//
02
03//  MyLibrary01.m
04
05//  MyLibrary01
06
07//
08
09//  Created by alanjiang on 13/2/25.
10
11//  Copyright (c) 2013年 lab. All rights reserved.
12
13//
14
15#import "MyLibrary01.h"
16
17@implementation MyLibrary01
18
19-(NSString *) sayHello
20
21{
22
23    return @"Hello 我是從 MyLibrary01 來的!!";
24
25}
26
27@end
4. 撰寫完成後,進行編譯,編譯的時候,不要選擇到「iOS Device」、要選擇 iPhone 或是 iPad,否則在使用此 Library 的專案在編譯時,會出現下面的 warming 訊息:
ld: warning: ignoring file /Users/alanjiang/Desktop/程式/Lab/UseMyLibrary01/UseMyLibrary01/libMyLibrary01.a, file was built for archive which is not the architecture being linked (i386): /Users/alanjiang/Desktop/程式/Lab/UseMyLibrary01/UseMyLibrary01/libMyLibrary01.a

Image(8)

5. 這樣就完成了,要使用的話,只要把「MyLibrary01.h」、「libMyLibrary01.a」拉到專案就可以了
Image(9)

PS. libMyLibrary01.a 放置的路徑比較不好找,可以在檔案上面按滑鼠右鍵,選擇「Show in Finder」就可以很快找到了。
Image(5)

二、建立 Single View Application 專案
1. 開啟 Xcode ,選擇 Application,建立一個 Single View Application 專案,名稱為「UseMyLibrary01」
Image(10)

2. 把「MyLibrary01.h」、「libMyLibrary01.a」用 Finder 拉到專案中,MyLibrary01.h 不用勾選 Add to targets
Image(11)

3. 完成之後,在 ViewController.m 裡使用我們建立的 MyLibrary01 裡的 sayHello Function
    記得要 import "MyLibrary01.h" 喔
Image(12)

4. 執行模擬器,會看到 Output 視窗有 NSLog 輸出的訊息,就是 sayHello 輸出的訊息,搞定收工!!
Image(13)

結論:
用此方式雖然不用每次都要複製相同的程式碼到不同的專案下,可是也是需要夾帶 .h 檔案到專案下,檔案一多,也不見得便利,

下次分享製作 Framework 的方式,就可以解決此缺點。

沒有留言:

張貼留言