老司機 iOS 週報 #112 | 2020-05-11

老司機 iOS 週報,只爲你呈現有價值的信息。android

你也能夠爲這個項目出一份力,若是發現有價值的信息、文章、工具等能夠到 Issues 裏提給咱們,咱們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。ios

新聞

🌟 Apple 將於 6 月 22 日起召開虛擬全球開發者大會

受今年新冠疫情的影響,早些時候蘋果就已經宣佈今年的 WWDC 會以線上形式繼續進行,而如今正式官宣明確了時間爲 6 月 22 日。這是第 31 屆開發者大會,而今年的 WWDC 又是以全新的線上形式舉行,相信也會帶來全新的體驗。git

忘了 WWDC 19 講了些啥?歡迎查收週報編輯們參與編輯的專題特輯 - WWDC 19 內參github

Flutter 1.17 發佈

@CrazyCoderShi:Flutter 2020 年的第一個穩定版本發佈了🎉🎉🎉,此次的新版本主要以加強穩定和修復歷史 Bug 爲主。在 iOS 端支帶來了 Metal 的支持,使得性能大幅提高,同時對 Flutter 的包體積作了不小的優化,新組件的增長等等。不想看英文的同窗能夠看中文版, 一樣推薦一塊兒發佈的 Dart-lang Release Note面試

文章

🌟 一次關於 Swift 在 iOS 生態圈裏的現狀調研

SketchK 的一篇數據調研筆記,能夠幫助你們看清當前國內 iOS 開發形式。數據庫

總的來講,國外 Swift 社區活躍度已經比 Objective-C 高了,國內大廠也在推動,具有 Objective-C 與 Swift 混編能力,若是你還沒上車,如今買票吧。小程序

🌟 🐢 百度小程序框架性能優化實踐

在移動互聯網時代,衆多的跨平臺、動態化方案,其本質都是在尋找 NA 和 H5 之間的平衡。從渲染層面上,可分爲 NA 渲染(RN、Flutter 等),以及 H5 渲染(小程序)。在一個平臺型的 APP 裏,目前業界最普遍使用的方案就是小程序,由於它能夠有效下降生產者和用戶的使用成本。小程序做爲 H5 渲染流派,靈活性已經被證明,因此性能一直是最受關注的技術點。本文介紹了百度小程序在性能優化方面的實踐,從框架啓動、小程序包下載、小程序包加載以及渲染等 4 個方面進行了全面的優化。swift

🌟 🐕 我是如何讓微博綠洲的啓動速度提高30%的

@含笑飲砒霜:啓動速度是 App 給用戶的第一印象,對用戶體驗來講相當重要。本文主要講述對微博綠洲 App 的啓動優化並闡述優化原理,主要從如下兩個方面入手:安全

  • 動態庫轉靜態庫, 優化了 dylib loading time
  • 經過二進制重排,讓啓動須要的方法排列更緊湊,減小了 Page Fault 的次數

🐕 Flutter 勢頭正盛 | 2020 春季速遞

@邦Ben:Flutter 現在已經發布了 1.17 穩定版本,迭代速度還挺不錯的。該文大致介紹了一下目前的應用狀況,例如:使用最多的國家前五是:印度、中國、美國、歐盟和巴西;在 Play Store 上 Flutter 應用約 5w 個。還介紹了亞洲之外的最大的數字銀行 Nubank 選擇了 Flutter 的緣由(有視頻)。有興趣能夠點進去了解了解。性能優化

🐎 The big Facebook crash of 2020 and the problem of third-party SDK creep

@張嘉夫:Facebook SDK 引起了大規模應用崩潰,緣由是 Facebook 服務器向其 SDK 發送了錯誤的數據,並致使 SDK 中的代碼崩潰,進一步致使運行該 SDK 的 app 終止運行。這篇文章提出了第三方 SDK 可能帶來的問題,因爲它們是在編譯時連接的動態庫,會讓 Facebook、Google 等數據收集、挖掘公司對這些 app 擁有控制能力。Facebook 致使的應用崩潰問題就是該能力的體現,他們似乎擁有了一個 「kill app 開關」。隨後做者提出了兩種技術解決方案,第一種方案是在不使用 Facebook SDK 的狀況下實現 Facebook 登陸,另外一種方案則是將這種類型的 SDK 和主 app 的代碼經過「沙盒」進行隔離。最後做者還提出了人爲解決方案,例如限制市場部門向 app 添加第三方數據分析代碼的權力。

🐕 拆!對比詳解 Flutter Widget 和 CSS,你關心的佈局原理都在這兒了

@looping:本文對比了 Flutter Widget 和 CSS 佈局原理的差別,客觀地分析了二者的優缺點,而且對它倆的優點可否互補也作了進一步的探討評估,同時還分享了實踐過程當中遇到的一些問題和解決方案,對這塊技術感興趣的同窗可順其思路好好研究一番。

🐕 圍觀 GitHub 重磅推出的四大新功能

@紅紙:近期 Github 推出了四項新功能,以幫助開發社區協同工做:

  • Codespaces: GitHub 中完整的開發環境,雲編輯器 + 雲託管的開發環境
  • GitHub Discussions: 開發者新的對話空間,issue 跟 PR 隨時均可能會被關閉,可是 discussion 不會被關閉,能夠用來維護 FAQ 或者協做文檔
  • Code scanning and secret scanning: 利用 Code scanning 對每一次 git push 進行安全漏洞掃描,結果會直接體如今 PR 上。Secret scanning 能夠監視私有倉庫中的已知 secret 格式,並在發現它們時當即通知開發人員。
  • GitHub Private Instances: 這是一個面向企業客戶的全新的、全託管選項,提供加強的安全性、合規性和策略功能。

🐕 History of Auto Layout constraints

@EyreFree:本文介紹了 Auto Layout 自 iOS 6 引入後如何發展至今的過程,經過舉例方式讓讀者直觀感覺到蘋果如何一步步解決 Auto Layout 的約束代碼冗長性問題。在您閱讀完本文以後,您可能會考慮淘汰第三方佈局庫,並開始直接使用標準 API。

🐢 一道 Block 面試題的深刻挖掘

@JimQ:又到了複習 Block 源碼(找工做)的時間,做者從一道 Block 面試題出發,深刻源碼爲你們剖析 Block 存儲域,Block 捕獲的變量傳遞類型,__block 修飾過的變量傳遞類型及其在 Block 中的存儲域變化,並結合 __weak 說明符,探討如何解除循環引用,避免內存泄露。

🐕 Realm.Object 與 NSObject 的轉換中 swift 協議妙用的體現

@anotheren:Realm 是一個跨平臺的移動數據庫引擎,在實際業務中,咱們通常會把業務模型和 Realm 的存儲模型分開。本文介紹瞭如何設計協議及其默認實現來快速完成 NSObjectRealm Object 的相互轉換。對於還處在大量混編階段的團隊,這是一個不錯的案例。

🐎 如何快速列出 App 的全部 +load 方法

@水水:一個基於 lldb 的 breakpoint 命令快速列出 App 的全部 +load 方法的實用小技巧,你們能夠收藏起來,萬一要用到呢~

工具

opentrace-ios

@極速男孩:opentrace-ios 是在 iOS 上實現 BlueTrace 協議的一個開源 APP。BlueTrace 一開始是新加坡政府開發的一個便於公共衛生機構使用低功耗藍牙對 COVID-19 的接觸者進行追蹤的工具,後來這個協議背影用到了全球。一樣這個 APP 有安卓版本,具體能夠查看連接

代碼

🌟 TrampolineHook

@J_Knight_:TrampolineHook 是一個能夠替換和攔截目標函數的框架。它能夠用來查看任意函數的耗時和調用鏈路以及幫助實現日誌功能等等。其流程設計是:

  • 把須要替換的原方法 IMP A 取出來,保存起來。
  • 給這個原方法塞一個動態分配的可執行地址 B。
  • 當執行這個原方法的時候,會跳轉到 可執行地址 B。
  • 這個 B 通過一段簡短的運算操做,能夠獲取到原先保存的 IMP A。
  • 在跳轉回 IMP A 以前,統一攔截函數先作些想作的事情,好比檢查是否是主線程調用等等。

並且在該流程下,能夠保證參數寄存器、返回地址等不會錯亂。讀者也能夠從下面的三篇文章(框架做者原創)來看一下該框架的從思路到實現的演進過程:

🐕 SwiftTrace

@xiaofei86:SwiftTrace 是用來追蹤 Swift 和 Objective-C 中 non-final 類的方法調用的框架,它是 Xtrace 的 Swift 版本,經過將 Swift 類的函數指針替換爲指向惟一彙編語言 「Trampoline」 入口點的指針來完成 Hook。經過 SwiftTrace 除了能夠追蹤類、實例、協議,還能夠爲成員函數建立切面,以在執行函數實現以前或以後調用一個閉包,在閉包中你甚至能夠修改傳入的參數或返回值。

🐕 Localize

@老峯:Localize 是一個很小的 Swift 實現的運行腳本,來提高本地化工做效率。主要包含:清除空格,按 Key 排序、檢測未使用對的 Key、檢測缺失的 Key、檢測未翻譯的 Key、檢測冗餘的 Key 等功能,使用簡單隻要在 Build Phases 配置 Run Script 便可,在國際化工做中有相似需求的同窗能夠研究一下。

音視頻

71: 「Polymorphic interfaces」 with special guest Dave Abrahams

@四娘:Swift by Sundell 的播客訪談這期請了一個重量級嘉賓 Dave Abrahams,他以前是 C++ 委員會的一員,參與過 C++ STL 和 Boost 的早期開發,後來在 Apple 參與了 Swift 的開發,如今在 Google 作 Swift For Tensorflow 的開發。(若是你們記得 WWDC 講 Swift POP 的那個 Session,講者就是他)

此次聊了他早期的 C++ 開發經歷和 Swift 標準庫的一些設計決策,包括王垠在Swift 語言的設計錯誤吐槽過的 Value Semantic Array,這個決定當時在 Swift 團隊內部也引發了成員的強烈反對,對這段故事感興趣的人很是推薦收聽這期播客。

內推

北京 / 成都 - 抖音:應屆 / 高級 / 專家 iOS、安卓、Server 都有大量 HC,歡迎

  • 應屆學生,一塊兒和大佬學習擼碼姿式。
  • 熟練老手,一塊兒作有挑戰的事情。
  • 行業專家,一塊兒在抖音這個平臺,實現更大我的價值。

保證每一封簡歷,我都跟進進度,給與反饋。有任何想了解的,能夠加我微信: jingmu1994,也能夠直接發送簡歷到 raozhizhen@gmail.com

老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。

若是你想找工做,點這裏:www.yuque.com/iosalliance…

若是你想招人,點這裏:www.yuque.com/iosalliance…

固然,也歡迎你關注咱們每一期的週報,咱們會在每期週報底部及時更新編輯內推崗位。

關注咱們

咱們開通了公衆號,每期發佈時公衆號(OldDriverWeekly)會推送消息,歡迎關注。

同時也支持了 RSS 訂閱:github.com/SwiftOldDri…

說明

🚧 表示需某工具,🌟 表示編輯推薦

預計閱讀時間:🐎 很快就能讀完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

相關文章
相關標籤/搜索