成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS從0到1搭建高可用App框架

移動開發(fā) iOS
最近在搭建新項目的iOS框架,一直在思考如何才能搭建出高可用App框架,能否避免后期因為代碼質(zhì)量問題的重構(gòu)。以前接手過許多“爛代碼”,架構(gòu)松散,底層混亂,缺少規(guī)范,導(dǎo)致團(tuán)隊開發(fā)時代碼風(fēng)格迥異,清晰的項目結(jié)構(gòu)和良好的代碼規(guī)范是保證產(chǎn)品質(zhì)量的關(guān)鍵,本文分享一下我的架構(gòu)思路。

最近在搭建新項目的iOS框架,一直在思考如何才能搭建出高可用App框架,能否避免后期因為代碼質(zhì)量問題的重構(gòu)。以前接手過許多“爛代碼”,架構(gòu)松散,底層混亂,缺少規(guī)范,導(dǎo)致團(tuán)隊開發(fā)時代碼風(fēng)格迥異,清晰的項目結(jié)構(gòu)和良好的代碼規(guī)范是保證產(chǎn)品質(zhì)量的關(guān)鍵,下面分享一下我的架構(gòu)思路。

架構(gòu)圖:

iOS從0到1搭建高可用App框架

架構(gòu)原則:易讀性、易維護(hù)性、易擴(kuò)展性。

一、思考

做好一件事,花在思考上的時間應(yīng)該多于執(zhí)行。

首先根據(jù)產(chǎn)品需求和設(shè)計圖,腦中先建立一個產(chǎn)品架構(gòu):

1. 產(chǎn)品的定位是什么。

社交?媒體?游戲?運(yùn)動?音視頻?電商……要搞清楚你要做一個什么類型的App,不同類型的產(chǎn)品,技術(shù)選型也有所不同,在這我是搭建一個基礎(chǔ)App架構(gòu),可以在此基礎(chǔ)上拓展社交、電商、音視頻等!

2. 技術(shù)選型

根據(jù)當(dāng)前產(chǎn)品的需求以及未來可能有的需求(我怎么知道未來會有什么需求?可以參照競品,可以發(fā)揮想象,如果產(chǎn)品說:“我們要做IM文字聊天,只做文字!不做音視頻,以后都不做!” 類似這樣的承諾,你如果信了他的邪……后面的故事就精彩了。。哈哈哈哈哈哈。。。。所以說這時候你就要考慮到后面會有語音+視頻聊天,在設(shè)計的時候不要偷懶,預(yù)留一定空間,當(dāng)某天產(chǎn)品反悔的時候,你可以微微一笑,從容應(yīng)對。

一把拉回話題,接著說技術(shù)選型,通常我會選擇一些當(dāng)下比較熱門、好用的第三方框架,例如: YYKit ,YYKit 是一組龐大、功能豐富的 iOS 組件,包含Model解析、圖片加載、緩存等基礎(chǔ)服務(wù),都是基于Category設(shè)計的,使用方便且性能高于一些老的框架,用過的都說好。

其他框架的選擇可以根據(jù)項目需求,去GitHub上搜索,星星多的每個都看一下,會給你增加一些思路。

程序猿長得可以保守,思想一定不能太保守。

二、搭建目錄結(jié)構(gòu)

iOS從0到1搭建高可用App框架

如上圖,我是這樣搭建App目錄結(jié)構(gòu)的,從下到上,使用Pods管理第三方框架,將第三方框架進(jìn)行二次封裝,供給頂層使用,盡可能減少各模塊之間的耦合度,只為更清晰。

三、封裝基礎(chǔ)類

iOS從0到1搭建高可用App框架

1. AppDelegate是應(yīng)用的代理,應(yīng)用級的事件都委托它處理,包含啟動退出、推送等事件,以及IM、支付等第三方的回調(diào),這使得AppDelegate內(nèi)代碼龐大,錯綜復(fù)雜,十分不利于閱讀和維護(hù),因此我新增了一個AppDelegate+AppService類別,用來處理生命周期之外的業(yè)務(wù),AppDelegate作為事件入口,具體實現(xiàn)直接調(diào)用類別里的方法,只為更清晰。

iOS從0到1搭建高可用App框架

2. Modules包含了應(yīng)用內(nèi)的功能模塊,根據(jù)底部Tab欄劃分并關(guān)聯(lián)實體文件夾(默認(rèn)是虛擬的要手動建立實體文件夾拖進(jìn)來),每個模塊內(nèi)使用的是MVC模式,有人會問為什么多了Resource和Service文件夾,MVC是一種設(shè)計思想,并非死套路就仨文件夾,根據(jù)實際需求適當(dāng)增加,在這我選擇在Service封裝數(shù)據(jù)請求,VC里調(diào)用拿數(shù)據(jù)即可,至于Resource為什么在這,我認(rèn)為當(dāng)功能模塊層級較多時,每個大功能模塊都對應(yīng)許多資源,對應(yīng)到模塊內(nèi)用起來方便,當(dāng)然也可以放到最外層的Resource文件夾里,建立對應(yīng)的模塊名稱,在這兒我是選擇把公共的放到最外層Resource里,功能相關(guān)的放到模塊里的Resource文件夾內(nèi),只為更清晰。

iOS從0到1搭建高可用App框架

3. Manager的定義是全局基礎(chǔ)服務(wù),通常使用類方法或者單例來實現(xiàn),主要包含對應(yīng)用、用戶的管理和服務(wù),例如網(wǎng)絡(luò)狀態(tài)監(jiān)聽,廣告頁應(yīng)用介紹頁等;用戶快速登錄退出操作以及登錄狀態(tài)的獲取等。只為更清晰。

iOS從0到1搭建高可用App框架

4. Utils文件夾內(nèi)主要包含全局通用工具,來源于對三方框架的二次封裝,或是自己寫的工具類。在這個項目里,我封裝了帶AES加密網(wǎng)絡(luò)請求工具,全局Toast提示,廣告頁等。只為更清晰。

iOS從0到1搭建高可用App框架

5. Base文件夾用來存放項目的基類,基類作用包含一些定制化的內(nèi)容,例如頁面樣式,空數(shù)據(jù)頁面等,使用基類來實現(xiàn),可以統(tǒng)一控制,利于維護(hù),減少冗余,也為更清晰。

iOS從0到1搭建高可用App框架

6. 第三方文件夾放一些第三方的類庫和對第三方封裝,比如第三方登錄、支付、IM等,現(xiàn)在項目我還沒有添加第三方框架。

7.全局宏顧名思義是定義了一些全局通用宏。我這里定義了四個:

UtilsMacros定義的是一些工具宏,比如獲取屏幕寬高,系統(tǒng)版本,數(shù)據(jù)類型驗證等;

URLMacros定義服務(wù)器接口地址以及環(huán)境開關(guān);

FontAndColorMacros定義全局用的色值、字體大小,這里建議跟設(shè)計師共同維護(hù)一個設(shè)計規(guī)范,例如:定義一個主色調(diào)宏 MainColor,色值是 0x333333,我們?nèi)质褂肕ainColor宏作為背景顏色,當(dāng)某天App改版,色值改變,我們只需要去更改 0x333333即可,其他代碼不需要動,同時也能一定程度約束設(shè)計師,不要隨便增加一種顏色,非常接近的顏色應(yīng)當(dāng)使用一個。如果設(shè)計師不愿意維護(hù)這個規(guī)范,你可以嘗試打一架,打不過的話,就只能自己維護(hù)了,只為更清晰。

ThirdMacros 包含第三方框架相關(guān)的定義,例如keySecret等。只為更清晰。

iOS從0到1搭建高可用App框架

8. 資源文件,上面說到過,這里我是存放了全局的一些資源文件,功能模塊的我放到了模塊內(nèi)的Resource文件夾內(nèi),個人喜好,只為更清晰。

iOS從0到1搭建高可用App框架

9. CocoaPods是iOS項目的依賴管理工具,開發(fā)iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現(xiàn)使得我們可以節(jié)省設(shè)置和第三方開源庫的時間。

以上就是我的基礎(chǔ)架構(gòu)思想。

責(zé)任編輯:未麗燕 來源: CocoaChina
相關(guān)推薦

2023-03-06 11:35:55

經(jīng)營分析體系

2022-03-15 11:51:00

決策分析模型

2019-07-31 10:18:17

Web 開發(fā)Python

2022-06-13 07:02:02

Zadig平臺自動化

2016-11-28 16:23:23

戴爾

2022-05-09 08:35:43

面試產(chǎn)品互聯(lián)網(wǎng)

2018-09-20 09:33:38

單機(jī)QPSRedis

2023-11-15 08:14:35

2017-10-30 09:09:41

2024-09-26 10:19:15

2022-10-14 16:25:50

數(shù)據(jù)可視化大屏搭建BI平臺

2021-01-27 07:24:38

TypeScript工具Java

2016-12-30 17:04:57

2022-01-27 13:02:46

前端爬蟲工具

2024-04-24 08:15:40

數(shù)據(jù)模型大模型AI

2017-06-27 09:26:53

運(yùn)維app開發(fā)

2017-01-05 21:05:40

2021-03-10 09:21:00

Spring開源框架Spring基礎(chǔ)知識

2021-07-01 07:03:32

開發(fā)Webpack代碼

2022-08-25 14:41:51

集群搭建
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美日韩一本 | 一片毛片 | 精精国产xxxx视频在线野外 | 一区二区免费在线观看 | 欧美综合一区二区 | 成人二区 | 999久久久久久久久6666 | 一区二区福利视频 | 欧美激情久久久 | 日韩精品无码一区二区三区 | 精品国产乱码久久久久久蜜臀 | 日韩欧美国产综合 | 天天躁人人躁人人躁狂躁 | 久久久精彩视频 | 日韩一二区在线观看 | 97色在线观看免费视频 | 欧美日韩国产精品一区 | 午夜影视网 | 亚洲欧美激情国产综合久久久 | 毛片黄片免费看 | 欧美三级电影在线播放 | 鲁大师一区影视 | 在线看片国产精品 | 男人av网| 97国产精品视频人人做人人爱 | 亚洲精品欧美 | 亚洲精品一区二区二区 | 亚洲精品电影网在线观看 | 日韩精品久久久 | 婷婷久久综合 | 亚洲成人一区二区 | 国产一区二区三区在线视频 | 久久成人免费 | 日本一区二区在线视频 | 在线免费黄色小视频 | 欧美xxxx在线 | 日韩www视频 | 91免费在线 | 国产精品亚洲精品久久 | 成人午夜精品 | 毛片a|