TCLMOVE 技術(shù)選型
- Swift
- Storyboard
- RxSwfit
- Rleam
- R.Swfit
- Moya+Alamofire+ObjectMapper
- SwiftyBeaver
- Kingfisher
- CocoPod
- …
編程語言選擇
- Swift
- Object-C
Swift的優(yōu)勢:
- 趨勢 蘋果已經(jīng)明確壹店,Swift將是未來的主力開發(fā)語言
- Swift定位是安全捕透,快速甸祭,跨平臺的語言
- gitHub上新增的第三方開源庫,Swift版本要多余Object-C的版本
Swift的缺點:
- 不支持Runtime
- 編譯速度慢
- Swift核心庫會打包在APP中瓢娜,增加了APP體積
建議: 對于新項目盡量采用Swift醇滥,對于業(yè)務(wù)復(fù)雜的舊項目Object-C繼續(xù)維持
代碼手寫 UI 和 Storyboard 之間的取舍
構(gòu)建 UI 方式的爭論就在 Cocoa 開發(fā)者社區(qū)里一直發(fā)生著躏仇,Storyboard 被詬病最多的 是沖突風(fēng)險
和加載速度
。
沖突風(fēng)險
Storyboard 一直在進(jìn)步腺办,在 Xcode 7 引入了 SB reference 以后焰手,「SB 容易沖突」已經(jīng)得到很好的解決了。
加載速度
編譯過程中怀喉,項目里用到的 SB 文件也會被編譯书妻,并以 storyboardc 為擴(kuò)展名保存在最終的 app 包內(nèi)。這個是一個文件夾躬拢,里面存儲了一系列 .nib 文件躲履。SB 中的每個對象將會被編譯為一個單獨(dú)的 .nib。
Storyboard 優(yōu)勢
Storyboard可以簡化UI的開發(fā)聊闯,屬性設(shè)置和布局都可以簡單化工猜,實現(xiàn)和邏輯代碼的分離,不會污染代碼菱蔬。
建議: 采用Storyboard
RxSwift
RxSwift是Swift函數(shù)響應(yīng)式編程的一個開源庫篷帅,由Github的ReactiveX組織開發(fā),維護(hù)拴泌。
RxSwift的優(yōu)點
- Composable 可組合魏身,在設(shè)計模式中有一種模式叫做組合模式,你可以方便的用不同的組合實現(xiàn)不同的類
- Reusable 代碼可重用蚪腐,原因很簡單箭昵,對應(yīng)RxSwift,就是一堆Obserable
- Declarative 響應(yīng)式的回季,因為狀態(tài)不可變家制,只有數(shù)據(jù)變化
- Understandable and concise 簡潔正林,容易理解。
- Stable 穩(wěn)定颤殴,因為RxSwift寫出的代碼觅廓,單元測試時分方便
- Less stateful “無”狀態(tài)性,因為對于響應(yīng)式編程诅病,你的應(yīng)用程序就是一堆數(shù)據(jù)流
- Without leaks 沒有泄漏,因為資源管理非常簡單
Rleam
Realm是由Y Combinator孵化的創(chuàng)業(yè)團(tuán)隊開源出來的一款可以用于iOS(同樣適用于Swift&Objective-C)和Android的跨平臺移動數(shù)據(jù)庫粥烁。
- 跨平臺:支持的平臺包括Java贤笆,Objective-C,Swift讨阻,React Native芥永,Xamarin。
- 簡單易用:Core Data 和 SQLite 冗余钝吮、繁雜的知識和代碼埋涧,而Realm,可以極大地減少學(xué)習(xí)成本奇瘦,立即學(xué)會本地化存儲的方法棘催。
- 可視化:Realm 還提供了一個輕量級的數(shù)據(jù)庫查看工具,可以查看數(shù)據(jù)庫當(dāng)中的內(nèi)容耳标,執(zhí)行簡單的插入和刪除數(shù)據(jù)的操作醇坝。
R.Swfit
R.Swfit 在Swift項目中自動生成資源(像圖片,字體次坡,轉(zhuǎn)場)相關(guān)的強(qiáng)類型變量呼猪,可以優(yōu)雅的獲取資源,仿Android資源文件使用的方法砸琅。
相關(guān)資源:
Moya+Alamofire+ObjectMapper
Moya的基本思想是宋距,提供一些網(wǎng)絡(luò)抽象層,它們被充分的封裝了且實際上直接調(diào)用了Alamofire. 它不僅在普通的簡單的事情上很容易使用症脂,而且在綜合的復(fù)雜的事情上也容易使用
如果你使用 Alamofire 來抽象 URLSession, 那為什么不使用一些方式來抽象URLs和parameters等等的本質(zhì)呢?
Moya的一些特色功能:
- 對正確的API端點訪問進(jìn)行編譯時檢查.
- 讓您使用關(guān)聯(lián)的枚舉值定義不同端點的清晰用法.
- 把test stub作為一等公民谚赎,所以單元測試超級簡單.
Moya Overview
Alamofire 是一個用Swift編寫的HTTP網(wǎng)絡(luò)庫.
特性:
- 鏈?zhǔn)降恼埱?響應(yīng)方法
- URL/JSON/plist參數(shù)編碼
- 上傳文件/數(shù)據(jù)/流/MultipartFormData
- 使用請求或恢復(fù)數(shù)據(jù)下載文件
- 身份驗證使用URLCredential
- HTTP響應(yīng)驗證
- 上傳和下載進(jìn)度閉包
- cURL命令輸出
- 動態(tài)調(diào)整和重試請求
- TLS證書和公鑰固定
- 網(wǎng)絡(luò)可達(dá)性
- 綜合單元和集成測試覆蓋
- 完整的文檔
ObjectMapper是一個用Swift編寫的框架,它使您可以很容易地將模型對象(類和結(jié)構(gòu))轉(zhuǎn)換為JSON诱篷。
特性:
- JSON對象映射
- 將對象映射到JSON
- 嵌套對象(在數(shù)組或字典中單獨(dú)使用)
- 自定義轉(zhuǎn)換期間映射
- 結(jié)構(gòu)支持
- 常量的支持
SwiftyBeaver
SwiftyBeaver沸版,Swift多彩日志記錄。
特性:
- 開發(fā)期間: 彩色記錄到Xcode控制臺
- 開發(fā)期間: 彩色記錄文件
- 發(fā)布期間: 加密記錄到SwiftyBeaver平臺
- 通過Mac App來瀏覽兴蒸、搜索和過濾
Kingfisher
Kingfisher是一個輕量級的视粮、純Swift的庫,用于從web上下載和緩存圖像橙凳。這個項目深受流行的SDWebImage的啟發(fā)蕾殴。
特性:
- 異步圖像下載和緩存笑撞。
- 基于URLSession〉鼍酰基本的圖像處理器和過濾器茴肥。
- 用于內(nèi)存和磁盤的多層緩存。
- 可取消下載和處理任務(wù)以提高性能荡灾。
- 獨(dú)立的組件瓤狐。根據(jù)需要分別使用下載程序或緩存系統(tǒng)。
- 預(yù)取圖像并在必要時從緩存中顯示它們批幌。
- 用于UIImageView础锐、NSImage和UIButton的擴(kuò)展,可以直接從URL中設(shè)置圖像荧缘。
- 設(shè)置映像時內(nèi)置的轉(zhuǎn)換動畫皆警。
- 可定制的占位符,同時載入圖片截粗。
- 可擴(kuò)展的圖像處理和圖像格式支持
CocoPods
CocoaPods iOS端的依賴管理工具信姓。
使用CocoPods作項目依賴庫的管理工具,包括第三方和本地的绸罗。
轉(zhuǎn)自組員意推,原鏈接
https://jigang-duan.github.io/2017/10/19/TCLMOVE-%E6%8A%80%E6%9C%AF%E9%80%89%E5%9E%8B/