欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

iOS模塊化開發(fā)淺析-創(chuàng)新互聯(lián)

背景:由于目前所在公司的iOS項(xiàng)目的依賴管理是比較原始的狀態(tài),但是APP功能又是越來越復(fù)雜的,這就帶來的很多問題,比如開發(fā)時(shí)編譯時(shí)間過長、模塊間耦合嚴(yán)重、模塊依賴混亂等。最近又聽說這個(gè)項(xiàng)目中的部分功能可能需要獨(dú)立出一個(gè)新APP,本著“Don't repeat yourself”的原則,我們試著抽離出原項(xiàng)目中的各個(gè)模塊,并在新的APP中集成這些模塊。

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、大冶網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為大冶等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

最近算是初步完成了新APP的模塊化,也算是從中總結(jié)了一些經(jīng)驗(yàn)?zāi)贸鰜矸窒硪幌?。同時(shí)也完成了一個(gè)模塊化框架TinyPart歡迎star。

模塊劃分

做模塊化還是要結(jié)合實(shí)際業(yè)務(wù),對目前APP的功能做一個(gè)模塊劃分,在劃分模塊的時(shí)候還需要關(guān)注模塊之間的層級。

比如說,在我們項(xiàng)目中,模塊被分成了3個(gè)層級:基礎(chǔ)層、中間層、業(yè)務(wù)層?;A(chǔ)層模塊比如像網(wǎng)絡(luò)框架、持久化、Log、社交化分享這樣的模塊,這一層的模塊我們可以稱之為組件,具有很強(qiáng)的可重用性。中間層模塊可以有登錄模塊、網(wǎng)絡(luò)層、資源模塊等,這一層模塊有一個(gè)特點(diǎn)是它們依賴著基礎(chǔ)組件但又沒有很強(qiáng)的業(yè)務(wù)屬性,同時(shí)業(yè)務(wù)層對這層模塊的依賴是很強(qiáng)的。業(yè)務(wù)層模塊,就是直接和產(chǎn)品需求對應(yīng)的模塊了,比如類似朋友圈、直播、Feeds流這樣的業(yè)務(wù)功能了。

代碼隔離

模塊化首先要做的是代碼層面上獨(dú)立,任意一個(gè)基礎(chǔ)模塊都是可以獨(dú)立編譯的,底層模塊絕對不能有對上層模塊的代碼依賴,還要確保未來也不會(huì)再出現(xiàn)這樣的代碼。

在這里我們選擇使用CocoaPods來確保模塊間代碼隔離,基礎(chǔ)和中間層模塊是一定會(huì)做成標(biāo)準(zhǔn)的私有pods組件,加入到私有pods倉庫。業(yè)務(wù)層的模塊,則不一定非要加到私有pods倉庫中,也可以使用submodule + local pods的方案。這樣做有兩個(gè)原因:其一是業(yè)務(wù)模塊的改動(dòng)往往比較頻繁,如果是標(biāo)準(zhǔn)的私有pods組件則需要頻繁的操作pod install或者pod update;其二是如果是local pod會(huì)直接引用對應(yīng)倉庫的源文件,在主工程對pods工程下業(yè)務(wù)模塊的改動(dòng)就是直接對其git倉庫的改動(dòng),沒有了頻繁的pod repo push和pod install操作。

依賴管理

選擇使用CocoaPods另外一個(gè)重要原因就是,可以通過它來管理模塊間的依賴,之前項(xiàng)目各個(gè)功能之所以難以復(fù)用的重要原因之一就是沒有聲明依賴。這里的依賴不僅僅是A模塊依賴B模塊這樣的事情,還可以是A模塊運(yùn)行需要的所有工程配置,比如A模塊工程需要添加一個(gè)GCC_PREPROCESSOR_DEFINITIONS預(yù)處理宏才能正常編譯。因此,個(gè)人認(rèn)為模塊依賴聲明非常重要,即便沒有像CocoaPods這樣的管理工具,也應(yīng)該有相關(guān)文檔來說明每個(gè)內(nèi)部模塊或者SDK的依賴。

CocoaPods的方便之處就在于你必須把你模塊的依賴列出來,否則是無法通過pod spec lint過程的,并且所有的依賴項(xiàng)也都是必須是pods倉庫。除此以外,依賴的集成也是自動(dòng)化的,CocoaPods可以自動(dòng)地添加工程配置和依賴組件。

模塊集成

在完成上述兩個(gè)步驟以后,模塊化工程的構(gòu)建工作基本就結(jié)束了,接下來我們探討一下如何在工程中更好地使用這些模塊。為此我們寫了一個(gè)組件化的開源方案 TinyPart。

一般來說,模塊初始化需要在APP啟動(dòng)或者UI初始化附近的時(shí)機(jī)來完成,有時(shí)候各個(gè)模塊的啟動(dòng)順序可能也是有講究的,這些初始化邏輯我們往往會(huì)加入到AppDelegate這個(gè)類里。過一段時(shí)間我們會(huì)發(fā)現(xiàn),AppDelegate這個(gè)類變得臃腫不堪,邏輯復(fù)雜,難以維護(hù)。在TinyPart中,Module的聲明協(xié)議包含了UIApplicationDelegate,這就意味著每一個(gè)模塊都可以實(shí)現(xiàn)有一套自己的UIApplicationDelegate協(xié)議,并且它們之間調(diào)用順序是可以自定義的。

@interface TPLShareModule : NSObject <TPModuleProtocol>
@end
@implementation TPLShareModule
TP_MODULE_ASYNC

TP_MODULE_PRIORITY(TPLSHARE_MODULE_PRIORITY)

- (void)moduleDidLoad:(TPContext *)context {
  [WXApi registerApp:APPID];
}

- (BOOL)application:(UIApplication *)application
      openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
  return [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)app
      openURL:(NSURL *)url
      options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  return [WXApi handleOpenURL:url delegate:self];
}
@end

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站aaarwkj.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

標(biāo)題名稱:iOS模塊化開發(fā)淺析-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://aaarwkj.com/article26/ccccjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、域名注冊網(wǎng)站維護(hù)、網(wǎng)站內(nèi)鏈、商城網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
高清不卡av在线播放| 日韩欧美第一页在线观看| 九九re久久这里有精品| 91亚洲婷婷国产综合精品| 五月婷婷丁香婷婷丁香| 亚洲大乳大丰满中文字幕| 免费观看久久黄色大片| 99精品热视频在线观看| 精品国产一区二区三区精品日韩| 国产粉嫩美女一区二区三| 亚洲精品成人午夜av| 素人人妻一区二区三区| 中文字幕91在线播放| 亚洲国产精品日韩专区av有中文| 欧美日韩免费一区二三区| 日本韩国三级伦理在线观看| av男人的天堂一区二区| 国产精品一级二区三区| 加勒比中文字幕日本道| 国产精品一区二区麻豆本子| 国产精品av国产精华液| 国产又大又爽免费视频| 老司机午夜视频在线观看| 欧美成人极品一区二区三区| 久久久人妻精品一区二区三区四区| 麻豆视传媒短视频免费看| 欧美日韩一区二区三区久久精品| 亚洲欧美日韩高清一区二区| 久久人妻制服乱码中文字幕| 午夜视频在线观看91| 中文字幕日韩激情欧美一区| 黄色国产一区二区三区| 麻豆精品新av中文字幕| 欧美福利在线观看视频| 欧美日韩激情中文字幕| 欧美日韩一区二区三区四区在线观看| 亚洲乱码一区二区三区人妇| 亚洲欧美二区中文字幕| 中文在线中文天堂黄色片| 日韩亚洲欧美精品另类| 成人深夜免费观看视频|