iOS通用的MVC模式項目框架MobileProject

    最近項目比較不趕的狀況下,決定把一些通用、經常使用的內容集成在一個項目框架中,意在新項目中能夠快速搭建;其實通過幾個項目後,老是有一些重複的建立工做,可使用本項目的內容直接進行開發;採用的是MVC的分層模式,本文將會重點介紹關於層級的劃分及一些已經集成的第三方功能介紹;固然本項目的源代碼已經上傳到gitHub(地址:https://github.com/wujunyang/MobileProject)上面,固然要是對你有幫助記得給個星,假如你們有時間也能夠一塊兒完善,或者有什麼問題也能夠及時留言;ios

    本項目是在XCode7上面建立,若您的XCode版本是在7如下,能夠把代碼中幾處7的特性進行刪除,就能夠正常運行本程序;本項目運用Pods進行部分第三方插件管理,對於Pods的知識不是本文的重點,若不瞭解能夠在網絡上進行搜索;項目中採用兩個Targets來區分產品環境跟測試環境,而後在網絡交互時設置不一樣的鏈接地址,假若有多個不一樣地區的版本也是經過不一樣的Targets進行配置,經過Targets的標識區分出一些差別化,項目的層級劃分是按如今比較經常使用的,若您有更好的意見歡迎提出來,會及時更新到項目中;項目的框架也會不斷更新跟集成新的內容進去;git

 

 

A 總體框架github


工程MobileProject爲主項目,Pods是自動管理部分第三方插件的工程;在MobileProject工程中對項目進行劃分紅Main、Expand、Resource、Vender、SDKFile、Supporting Files六個部分;數據庫

一 :Main(主要):主要存放關於MVC的內容文件,子級爲每一個大功能模塊的內容;目前MobileProject已經默認建立幾個,包含Logger(日誌)、Preview(預演)、Home(首頁)、Public(公共)、Base(基類)、Login(登陸);微信

1.1.1 Preview用於存放一些練習的功能頁面,本項目集成一些第三插件實例或者實例代碼都會放在裏面;網絡

1.1.2 Public主要是爲了考慮一些可能每一個功能模塊都會包含的內容,就能夠放在此處;在每一個大的功能模塊中都包括如下幾部,分別爲Model、View、Controller、Other;此處又把View級進行拆分出SubView及Cell;SubView意在存放一些子視圖,而Cell則是爲了存放一些表格行;這部分能夠根據每一個不一樣的項目建立出不一樣的子級;框架

1.1.3 Base用於存放一些抽離提取或以共用的可被繼承的內容;工具

 

二: Expand(擴展):主要存放一些經常使用的幫助類及擴展類,此級又分爲Const(常量)、Macros(宏)、Tool(工具類)、Network(網絡)、Category(分類)、DataBase(數據庫)六個部分;測試

1.2.1 其中Macros裏面又分出兩個文件Macros.h、ThirdMacros.h,第一個是存放一些項用經常使用的宏,例如如屏幕大小、字體等;而第二個意在存放一些第三方的SDK要使用的Key值,例如友盟、百度地圖等;字體

1.2.2 Tool目前存放着一些提取的幫助管理類,例如UmengHelper(友盟管理)、LcationManager(定位管理)、Logger(日誌記錄)、Reachability(網絡狀態)等,

1.2.3 Network目前是運用猿題庫封裝AFNetworking使用的YTKNetwork源代碼,本項目對它進行一些微調,讓它適用於項目中多個Targets對應不一樣的請求地址,若要修改API地址在NetWorkBaseUrlConfig類裏面,網絡請求地址目前又分爲邏輯訪問前綴地址、圖片加載的地址、升級APP的請求地址、登陸的請求地址;而後在MVC層裏面的API請求時再根據SERVERCENTER_TYPE來區分加載是哪種前綴地址;項目中登陸模塊已經有一個實例代碼;

1.2.4 Category爲Git上面iOS-Categories分類的內容,多建立一個Other用於存放平時要擴展的分類;經常使用的擴展類其實大多已經包含在裏面;

1.2.5 DataBase意在存儲一些項目要用到的初始化數據,固然包含各類類型的文件均可以存放在這;

 

三:Resource(資源)主要存分三個部分的內容,包含Global(全局)、Image(圖片資源)、Plist(配置)三部分;此部分的內容也比較單一,Global用於存放項目一些全局的內容,包含啓動項的內容LaunchScreen.storyboard、頭部引用PrefixHeader.pch、語言包File.strings; Image用於存放圖片資源,能夠根據功能模塊進行再分不一樣的xcassets文件;Plist用於存放plist文件,主要是本項目中會建立多個的Tag,而每一個Tag都會有自個的plist文件進行管理,因此統一存放方便管理;

 

 

四:Vender(第三方)存放一些可能被修改的第三方插件及一些自個封裝插件;本實例中引用的幾個比較經常使用的第三方插件,簡單介紹其中的幾個,GVUserDefaults是對UserDefaults的封裝,簡單就能夠用於存取操做;JDStatusBarNotification是在狀態欄提示效果的插件;ActionSheetPicker底部彈出如時間選擇、選項的插件;QBImagePickerController是照片選擇插件,支持多選並能夠設置最多選擇張數;其它幾個插件能夠經過名字在網絡上進行搜索,很容易就能夠有相應的實例及使用方法;

 

五:SDKFile(集成)意在存放一些第三方SDK的文件,固然如今不少比較有名的SDK都有Pods進行管理;這樣也省去了咱們自個去維護更新的麻煩;假如沒有Pods的方式,就把SDK放在此處;

 

六:Podfile主是一些比較穩定的第三方插件及SDK的引用;關於Pod使用的好處就不在這介紹,若是項目中尚未使用就趕忙了;

platform :ios, '7.0'
pod 'AFNetworking', '~>2.6.0'
pod 'SDWebImage', '~>3.7'
pod 'JSONModel', '~> 1.0.1'
pod 'Masonry','~>0.6.1'
pod 'FMDB/common' , '~>2.5'
pod 'FMDB/SQLCipher', '~>2.5'
pod 'CocoaLumberjack', '~> 2.0.0-rc'
pod 'BaiduMapKit' #百度地圖SDK
pod 'UMengAnalytics-NO-IDFA'#友盟統計無IDFA版SDK
pod 'GTSDK'  #個推SDK
pod 'UMengSocial', '~> 4.3'  #友盟社會化分享及第三方登陸

 

B 集成內容

MobileProject目前已經集成百度地圖的定位、友盟統計、CocoaLumberjack日誌記錄、個推的消息推送、友盟分享、友盟第三方登陸內容;從此還會集成一些比較經常使用的內容;上面幾部分只要替換相應key就可使用;個推還要使用到大家的證書;相應的實例代碼都在項目中,也是通過驗證測試過了;初始化代碼都在AppDelegate裏面;(QQ,微信,新浪)三種的第三方登陸功能,(QQ空間分享,微信朋友圈,新浪微博分享,QQ微博分享,微信好友)五種的分享功能,相應的代碼都放在項目Preview中;也增長關於CocoaLumberjack日誌記錄的展現及查看頁面;

相關文章
相關標籤/搜索