老司機 iOS 週報,只為你呈現有價值的資訊。
你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。
新手推薦
Flutter 豆瓣客戶端
@邦Ben:該開源庫,對豆瓣客戶端有一定的還原度,不過未實現部分也挺多,畢竟僅僅只是學習用途,暫時裡面並沒有用到更為複雜的 Rx 或者 Redux ,因此十分適合新手先上路。在學習 Flutter 的同學可以一看。
PS:專案需要還原一下 Podfile 為初始狀態方可執行( BUG )
文章
? ? 移動開發這十年
@蓮叔: 移動開發從誕生之日起,到現在已經過了十年時間,這篇文章是 InfoQ 邀請美團的藏成威老師回顧了移動開發技術的十年演變。筆者作為移動開發年限算比較久的老兵,有幸經歷了其中大部分的浪潮。其中絕大多數技術升級都是圍繞跨平臺、動態性,歸根到底技術體系的升級是圍繞業務形態來決定的。文章比較全面的剖析了從 H5 hybrid,到 RN/Weex, 到 Flutter/小程式等不同階段的跨平臺技術。文章本身沒有太多技術點,但非常適合拿來作為思考技術和業務是如何相互影響的素材,在閱讀文章的時候要多問 Why,相信會有不少的收穫。
? ? ? Reducing FOOMs in the Facebook iOS app
@zvving:Facebook 2015 年的一篇經典文章,提出優化 OOM 問題的一些思路:
- 通過列舉所有 App 被終止的已知路徑區分是 FOOM 還是 BOOM
- 分析記憶體使用狀況,從 UIWebView 遷移至 WKWebView,降低記憶體佔用
- 避免記憶體重複申請與釋放,減少多大 30% OOM Crashes
- 完善基礎設施:跟蹤 App 中每個類的例項計數和記憶體佔用
相關閱讀:iOS微信記憶體監控
? ? iOS App 安全加固方案調研
@紅紙:iOS 系統向來以安全著稱,但是在越獄面前,我們的 App 接近於裸奔的狀態。在本文中,作者整理了如下內容:
- 現有市面上已有的加固方案,以圖片的方式,展示了各家公司的核心功能點。
- 對現有的加固方案,進行了一次規整,總體方案梳理
- 資料保護:細分中有網路資料、IPA 資源資料、沙盒資料、Keychain 資料
- 混淆保護:細分中有符號混淆、字串混淆、指令混淆
- 反除錯保護:細分方案有 ptrace 和 sysctl 兩種防護策略,(有興趣可以參考 關於反除錯&反反除錯那些事)
- 異常檢測:動態監控 App 的異常資訊,例如被注入、篡改程式碼、重簽名等攻擊行為
世界上沒有絕對的安全可言,想要了解更多關於安全方面的知識,推薦沙老師的書《iOS應用逆向工程》,以及 念茜的安全攻防系列。
? ? ? 為什麼需要 Reactive Programming?
@Jason:相信有不少同學都或多或少嘗試過 ReactiveCocoa 或者 RxSwift,享受到了鏈式呼叫的快樂,但是對於 Reactive 思想的本質,可能不一定每個人都有深入的思考過。本文拋開 Rx 庫本身,也沒有再重複介紹如何使用 Rx,而是從一些日常開發過程中的問題出發,探討 Reactive 思想的由來,它所解決的關於資料流、事件傳播和觀察者模式的一系列問題,以及作者在幾年的使用中所領悟的一些更深層次的思考。
? Architecturing an app with functional reactive programming
@anotheren:本文從常見的“回撥地獄出發”,講述了為什麼應該使用響應式框架來進行程式設計。並以 ReactiveX 框架為例,同步展示了在 Swift/Kotlin 中這類框架的思想和應用,推薦閱讀。
? ? Optional, throws, Result, and async/await
@xiaofei86:在 Swift 5 之前,我們通過 optional 和 throws 來處理錯誤。在 Swift 5 中,雖然沒有我們期盼的 async/await 特性,但在標準庫中增加了 Result 型別。本文對這些 Swift 錯誤處理的方式進行對比,讓你更好的瞭解 Swift 錯誤處理的進化過程。
工具
Xcode10 New Build System And CocoaPods
@享耳先森:Xcode 10 釋出之後,你可能發現修改了 CocoaPods 依賴庫的原始碼之後立即編譯並不生效,必須 clean 整個專案重新編譯,這其實是 Xcode 10 預設採用 New Build System
導致的,本文介紹了兩種解決方案。
Marzipanify
@老峰:在 WWDC 2018 蘋果分享了名為 Sneak Peak 的工具可以將 iOS APP 移植到 Mac 中,並宣佈 2019 對第三方開發者開放,Marzipanify 是 Steven Troughton-Smith 自己開發的一個小工具讓開發者提前體驗 iOS APP to Mac APP,感興趣的讀者快來嘗試吧。
程式碼
手把手教你在Flutter專案優雅的使用ORM資料庫
@CrazyCoderShi:Flutter 現在開發上最大的槽點可能就是資料庫使用了,Flutter 現在只提供了 sqllite 外掛,手寫 sql 程式碼,建表、建索引、transation、db 執行緒控制等等繁瑣的事情必然接踵而至,這種資料庫使用方式是最低效的了,又倒退回去裸寫 sql,這對大部分團隊都是重大的成本。
本文將詳細介紹一種在 Flutter 專案中優雅的使用 ORM 資料庫的方法,文中使用的 ORM 框架是包含在一個 Flutter 外掛 flutter_luakit_plugin (如何使用可參考介紹文章)中的其中一個功能,本文只詳細介紹這套 ORM 框架的使用和實現原理。並且給出了一個詳細的 demo 。
開源庫
NSFWDetector
@張嘉夫:CoreML NSFW(色情)內容檢測器。NSFWDetector 是一個小型(17 kB)CoreML 模型,由 CreateML 訓練,用於檢測圖片中的裸體。
InAppViewDebugger
@紅紙:UIView Debugger,類似於 Reveal 和 Xcode 中整合的元件,其比較方便的是能夠在 APP 內就可以直觀的去檢視,但目前它只是處於 1.0 版本,功能僅限於檢視檢視層級,期待其能擁有更加完善的功能。
內推
老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。
如果你想找工作,點這裡:www.yuque.com/iosalliance…
如果你想招人,點這裡:www.yuque.com/iosalliance…
當然,也歡迎你關注我們每一期的週報,我們會在每期週報底部及時更新編輯內推崗位。
關注我們
我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。
同時也支援了 RSS 訂閱:github.com/SwiftOldDri… 。
說明
? 表示需翻牆,? 表示編輯推薦
預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)