iOS 封裝framework

1. 創(chuàng)建framework

關(guān)于創(chuàng)建靜態(tài)庫(kù)framework,新建project選擇以下標(biāo)簽,然后自己命名

在創(chuàng)建好的framework中創(chuàng)建需要的類(lèi)或者category,比如以下創(chuàng)建了一個(gè)簡(jiǎn)單的alertShow


給alertShow添加一個(gè)類(lèi)方法,方便檢查framework封裝是否達(dá)到目的

#import <Foundation/Foundation.h>

@interface AlertShow : NSObject

+ (void)showMessage:(NSString *)message;

@end
#import "AlertShow.h"

@implementation AlertShow

+ (void)showMessage:(NSString *)message
{
    NSLog(@"%@", message);
}

@end!

這里還需要把公開(kāi)的類(lèi)添加到AlertShowFrameWork里面

#import <UIKit/UIKit.h>

//! Project version number for AlertShowFrameWork.
FOUNDATION_EXPORT double AlertShowFrameWorkVersionNumber;

//! Project version string for AlertShowFrameWork.
FOUNDATION_EXPORT const unsigned char AlertShowFrameWorkVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <AlertShowFrameWork/PublicHeader.h>

#import <AlertShowFrameWork/AlertShow.h>

2. 個(gè)性化配置framework

a. 設(shè)置framework支持最低配置的iOS系統(tǒng)版本號(hào)
b. 根據(jù)需求選擇性添加armv7s

Xcode6之后,默認(rèn)不支持armv7s,如果需要添加FrameWork的工程是支持armv7s,那將會(huì)有沖突
c. 'Mach-O Type' 設(shè)置為 'Static Library'

FrameWork對(duì)于用戶(hù)生成的一定是靜態(tài)庫(kù)
d. Build Active Architecture Only屬性

這個(gè)屬性設(shè)置為yes,是為了debug的時(shí)候編譯速度更快,它只編譯當(dāng)前的architecture版本。
而設(shè)置為no時(shí),會(huì)編譯所有的版本。
編譯出的版本是向下兼容的,比如你設(shè)置此值為yes,用iphone4編譯出來(lái)的是armv7版本的,iphone5也可以運(yùn)行,但是armv6的設(shè)備就不能運(yùn)行。

所以,一般debug的時(shí)候可以選擇設(shè)置為yes,release的時(shí)候要改為no,以適應(yīng)不同設(shè)備。
e. 其他屬性

其他博客里面大都提到要在BuildSetting修改Dead Code Stripping、Link with Standard Libraries,但在Xcode7及以上版本后,不需要再把它們?cè)O(shè)置為NO

Dead Code Stripping
Dead Code Stripping設(shè)置為YES,也能夠一定程度上對(duì)程序安裝包進(jìn)行優(yōu)化,只是優(yōu)化的效果一般,對(duì)于一些比較小的項(xiàng)目甚至沒(méi)有什么優(yōu)化體現(xiàn),所以這里也就沒(méi)有上測(cè)試數(shù)據(jù)。
Dead Code Stripping 是對(duì)程序編譯出的可執(zhí)行二進(jìn)制文件中沒(méi)有被實(shí)際使用的代碼進(jìn)行Strip操作。對(duì)他有興趣的可以點(diǎn)進(jìn)去查看
Link with Standard Libraries
LINK_WITH_STANDARD_LIBRARIES = YES
如果激活此設(shè)置,那么編譯器在鏈接過(guò)程中會(huì)自動(dòng)使用通過(guò)標(biāo)準(zhǔn)庫(kù)的鏈接器。

3. 生成framework

首先把需要外放的文件添加到以下的位置


分別通過(guò)command+b編譯生成模擬器的包和真機(jī)

在finder里面的兩個(gè)文件夾內(nèi)的內(nèi)容都是一樣的,可以通過(guò)終端把AlertShowFrameWork合并成一個(gè)

在終端輸入 lipo -create 第一個(gè)文件地址 第二個(gè)文件地址 -output 生成文件地址
記得要給生成的文件命名為AlertShowFrameWork,方便后面替換,不命名的話會(huì)報(bào)錯(cuò)

拿到生成的文件替換到剛Debug-iphone里面任意一個(gè)framework里面的AlertShowFrameWork,替換之后的

可以復(fù)制到項(xiàng)目里面使用了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容