• <small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small><xmp id="w8oog"><td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><xmp id="w8oog"><td id="w8oog"></td>
  • <td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small>
  • <small id="w8oog"></small><td id="w8oog"></td>
    免費開源的iOS開發學習平臺

    正式開發前如何從零開始搭建一個App的基礎框架

    在網上發現了一篇比較不錯的介紹如何搭建App框架的文章,轉載給大家學習參考。

    App框架的整體架構圖

    架構原則:易讀性、易維護性、易擴展性。

    首先根據產品需求和設計圖,腦中先建立一個產品架構:

    1. 產品的定位是什么。社交?媒體?游戲?運動?音視頻?電商……要搞清楚你要做一個什么類型的App,不同類型的產品,技術選型也有所不同,在這我是搭建一個基礎App架構,可以在此基礎上拓展社交、電商、音視頻等!

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

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

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

    搭建目錄結構

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

    封裝基礎類

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

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

    3. 管理模塊。Manager的定義是全局基礎服務,通常使用類方法或者單例來實現,主要包含對應用、用戶的管理和服務,例如網絡狀態監聽,廣告頁應用介紹頁等;用戶快速登錄退出操作以及登錄狀態的獲取等。只為更清晰。

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

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

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

    7. 全局宏定義。全局宏顧名思義是定義了一些全局通用宏。我這里定義了四個:UtilsMacros定義的是一些工具宏,比如獲取屏幕寬高,系統版本,數據類型驗證等;URLMacros定義服務器接口地址以及環境開關;FontAndColorMacros定義全局用的色值、字體大小,這里建議跟設計師共同維護一個設計規范,例如:定義一個主色調宏 MainColor,色值是 0x333333,我們全局使用MainColor宏作為背景顏色,當某天App改版,色值改變,我們只需要去更改 0x333333即可,其他代碼不需要動,同時也能一定程度約束設計師,不要隨便增加一種顏色,非常接近的顏色應當使用一個。如果設計師不愿意維護這個規范,你可以嘗試打一架,打不過的話,就只能自己維護了,只為更清晰。

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

    9. Pods。CocoaPods是iOS項目的依賴管理工具,開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設置和第三方開源庫的時間。


    ijzzijzzij亚洲大全|天天狠天天透天干天天|日本一本加勒比五月天伊人久久|久久久噜噜噜久久中文字幕色伊伊
  • <small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small><xmp id="w8oog"><td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><xmp id="w8oog"><td id="w8oog"></td>
  • <td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small>
  • <small id="w8oog"></small><td id="w8oog"></td>