本稿來自本羣 【Misery_IOS_武漢】投稿,初次投稿值得鼓勵,而且重點是步驟很詳細。感謝支持與配合!
以下是Misery的分享內容:
1. 新建一個 Project,選擇CocoaTouch Static Library,取工程名爲MarkKit,如圖:
2 刪除target,如圖:
3. 在Xcode中new->file->target新建一個target;選擇OS X目錄下FrameWork&Library中的Bundle,取名爲MarkiOSKit,如圖:
4. 刪除MarkiOSKit中MarkiOSKit-Prefix.pch中的#import<Cocoa/Cocoa.h>,如圖:
5.修改target設置
Build Settings選項卡:
Base SDK選擇Latest iOS(iOS 6.1)
Build ActiveArchitecture Only選擇NO
Dead Code Stripping選擇NO
Mach-O Type選擇Relocatable Object File
Link With Standard Libraries選擇NO
Wrapper Extension修改爲framework
Info選項卡:
Bundle OS Type code 修改爲FMWK
Build Phases選項卡:
點擊右下角的Add Build Phases,選擇AddCopy Headers. 添加頭文件和源文件如圖:
6. 在MarkKit.h和MarkKit.m裏面寫入你的函數聲明和實現:
//MarkKit.h
#import <Foundation/Foundation.h>
@interface MarkKit : NSObject
- (void)printMarkKit;
@end
// MarkKit.m
#import "MarkKit.h"
@implementation MarkKit
- (void)printMarkKit
{
NSLog(@"Hello MarkKit!");
}
@end
7. 選擇Run Scheme如圖:
點擊Run,成功運行;至此成功生成framework。
8. 查看framework build路徑方式
點擊Xcode右上角Organizer,選擇Projects選項卡如圖,點擊紅色標註裏的箭頭可以進入bulid路徑,
紅色標註的文件夾就是生成的framework。(文件夾下en.lproj和Info.plist都可以直接刪除,只需保留Headers文件夾和MarkiOSKit就可以了)
讓我們來測試一下,把這個文件夾添加到一個新的工程裏面。
添加代碼如下:
運行結果如下:
小編的補充:
本文主要是完成在XCODE4.6環境下,實現自定義框架。
自定義FrameWork就是通常說的庫,可以共享各種代碼和文件資源在裏面,初步斷定,一個framework再內存中只copy一次,也只擁有一個bundle。
優勢:
第一,充分體現了模塊化設計的可擴展性和高內聚行
第二,framework 能夠進行版本管理,這使得 framework 能不斷更新並向後兼容;
第三,在同一時間,即使有多個應用程序使用同一 framework,但在內存中只有一份 framework 只讀資源的拷貝,這減少了對內存的佔用