[iOS] 建立与使用Framework
[iOS] 建立與使用Framework
前言
使用XCode開發iOS項目時,開發人員可以將可重用的程序代碼,封裝為Library或是Framework來提供其他開發人員使用。這兩種封裝方式在使用的時候:Library需要將.a封裝檔與所有公開的.h檔提供給使用者加入項目,而Framework則只需要將.framework封裝檔提供給使用者加入項目。就使用情景來說,提供單一.framework封裝檔會顯得比較簡單方便。本篇文章介紹如何將可重用的程序代碼封裝為Framework,主要為自己留個紀錄,也希望能幫助到有需要的開發人員。
建立
首先開啟XCode來建立一個新項目:「MyFramework」,專案類型選擇為Cocoa Touch Framework。這個項目用來封裝可重用的程序代碼,提供其他開發人員使用。
-
專案類型
接著在MyFramework加入一個新類別:「MyClass」,做為提供給其他開發人員使用的程序代碼。
-
MyClass.h
#import <Foundation/Foundation.h> @interface MyClass : NSObject// methods - (NSString*) getMessage;@end -
MyClass.m
#import "MyClass.h"@implementation MyClass// methods - (NSString*) getMessage {return @"Clark"; }@end
建立好MyClass之后,接著要把MyClass.h設定為Public,讓使用的開發人員可以加入類別的.h檔參考。
-
Public Headers
接著在項目預設的MyFramework.h里面加入MyClass.h檔的參考,讓后續使用的開發人員只要import單一個MyFramework.h檔,就可以引用到Framework里Public出來的.h檔。
-
MyFramework.h
#import <UIKit/UIKit.h>//! Project version number for MyFramework. FOUNDATION_EXPORT double MyFrameworkVersionNumber;//! Project version string for MyFramework. FOUNDATION_EXPORT const unsigned char MyFrameworkVersionString[];// In this header, you should import all the public headers of your framework using statements like #import <MyFramework/PublicHeader.h> #import "MyClass.h"
最后一個設定步驟,是要加入一段Run Script,用來將「仿真器版本Framework」、「實機版本Framework」,整合輸出為單一Framework。
-
參考數據
- 用lipo合并模擬器Framework與真機Framework - IOS開發學習博客
-
Run Script
if [ "${ACTION}" = "build" ] then INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.frameworkDEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.frameworkSIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.frameworkif [ -d "${INSTALL_DIR}" ] then rm -rf "${INSTALL_DIR}" fimkdir -p "${INSTALL_DIR}"cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/" #ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"#open "${DEVICE_DIR}" open "${SRCROOT}/Products" fi -
Setting
完成設定步驟后,分別Build兩個不同版本的Framework:仿真器版本、實機版本。接著,設定在建置作業中的Run Script,就會將兩個版本的Framework,整合輸出為單一的MyFramework.framework
-
仿真器版本
-
實機版本
-
產出MyFramework.framework
使用
接著開啟XCode來建立一個新項目:「MyAPP」,專案類型選擇為Single View Application。這個項目用來說明,如何使用封裝為Framework的程序代碼。
-
專案類型
再來將Framework復制一份,放到MyAPP的專案文件夾內。XCode編譯的時候,會去這個路徑底下找尋Framework。
-
Framework檔案路徑
回到XCode的項目屬性頁面,把Framework的參考加入到項目里。
-
加入參考
接著在項目預設的ViewController.m文件里面,加入下列程序來使用Framework里面所封裝的程序代碼。
-
加入Framework參考
#import <MyFramework/MyFramework.h> -
使用Framework中的程序代碼
// test MyClass* x = [[MyClass alloc] init]; NSString* message = [x getMessage]; -
完整的ViewController.m
#import <MyFramework/MyFramework.h> #import "ViewController.h"@implementation ViewController- (void)viewDidLoad {// super[super viewDidLoad];// testMyClass* x = [[MyClass alloc] init];NSString* message = [x getMessage];// alert[[[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; }@end
最后,執行MyAPP。可以在執行畫面上,看到一個Alert窗口顯示從Framework取得的訊息內容,這也就完成了使用Framework的相關開發步驟。
-
顯示回傳訊息
后記
XCode編譯的時候,會去特定路徑底下搜尋Framework來加入編譯。如果需要增加或修改參考路徑,可以透過調整Build Setting里的Framework Search Paths參數來變更。
-
Framework Search Paths
范例下載
范例程序代碼:下載地址
轉載于:https://www.cnblogs.com/clark159/p/4963685.html
總結
以上是生活随笔為你收集整理的[iOS] 建立与使用Framework的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Exchange2007 从零到入门(2
- 下一篇: 数组与串,串的实现,KMP,BF算法