老司機 iOS 週報,只為你呈現有價值的資訊。
你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。
福利
? 免費領取小專欄 -- WWDC2019 內參
WWDC2019 內參現已更新到 42 篇,以下是上週更新的文章,歡迎大家訂閱學習~
必看
SwiftUI
推薦
- Foundation 框架的新亮點
- Modernizing Your UI for iOS13
- UICollectionView 全新佈局框架:UICollectionViewCompositionalLayout
可直接點選標題連結,或者複製 xiaozhuanlan.com/wwdc19/pres… 至瀏覽器開啟領取。
Design+Code 的 SwiftUI 教程限時優惠
掃碼購買在五折基礎上輸入 iOSWeekly 優惠碼再優惠 20 元,限時購買!!!
新聞
2019 年 Swift 和 Objective-C 開發者調查報告(JetBrains版)
@xiaofei86:最近知名 IDE 廠商 JetBrains 釋出了 2019 年開發者調查報告。本文彙總了與 Swift 和 Objective-C 相關的 11 項調查資料和結果。資料顯示,僅使用 Swift 的開發者佔比已經過半,僅使用 Objective-C 的開發佔比已經僅剩 15%。
文章
? 0.3s 完成渲染!UC 資訊流正文“閃開”優化實踐
@aaaron7:目前,App 通過整合 webview 的方式來將一部分資訊展示的任務交給 h5 來實現已經成為行業相對通用與標準的做法。但這樣的場景不可避免的會遇到開啟速度的問題,相比直接 push 一個 native 的 view,開啟一個基於 webview 的頁面往往會重很多,比如 webview/jsengine 的初始化,h5 檔案的解析與渲染,js 的執行,ajax 的資料拉取,冗長的流程造成的結果就是開啟 webview 的頁面往往很慢,而且使用者會看到白屏。
本篇文章的作者從整個鏈路的分析出發,提出了一整套優化的技術,比如離線寶、native 渲染、資料預請求等等,並且從截圖上看實現了直出的效果。有相關類似優化場景需求的同學可以好好研究下。
? 揭祕蘋果應用稽核內幕
@老峰:蘋果應用稽核過程一直以來是個黑盒,我們經常會遇到讓人抓狂卻無可奈何的被拒郵件,那麼稽核到底是怎樣的過程呢?
本文根據最近發表在 CNBC 的一篇文章揭祕了 Apple 應用稽核執行稽核委員會組成結構及工作內容、應用稽核過程、應用拒審處理細節等等,對稽核過程好奇的讀者可以看一下。
參考連結:
? App Store 稽核極限操作(2019.6 最新)
@極速男孩007:本篇文章主要介紹了蘋果稽核中遇到的一些問題,然後提供了一些針對性的解決方案。並且推薦了一些關於稽核的文章做參考。
參考連結:
? 系列文章深度解讀|SwiftUI 背後那些事兒
@zvving:繼上篇新晉網紅SwiftUI——淘寶帶你初體驗後,淘寶技術團隊又帶來 SwiftUI 更詳細的介紹。
本文彙總闡述了 WWDC19 中大量關於 SwiftUI 的內容:從 DSL 所需要的新語法,到 API 設計指南,從 DataFlow 到佈局演算法,從混合佈局到多裝置適配……
文章涉及技術細節點到為止,而又對 SwiftUI 知識輪廓面面俱到。如果你還沒接觸過 SwiftUI,想花二十分鐘對其知識圖譜有個整體認知,這篇文章會是最好的入門指南。
? GMTC2019 演講實錄|閒魚基於 Flutter 的架構演進與創新
@Parsifal:GMTC2019 已於上週圓滿結束。閒魚作為國內率先大規模嘗試 Flutter 的團隊,也在這次 GMTC 上做了關於閒魚是如何使用 Flutter 做混合式開發以及業務落地上的分享。Flutter 作為一個跨端解決方案,與原生混編的問題是其必然會遇到而且接受考驗的。本次演講,閒魚團隊圍繞著以下兩個問題,分享了閒魚團隊是如何演進和創新 Flutter 架構的。
- 如果在一個已經存在的 App 中加入 Flutter,如何讓 Native 與 Flutter 進行無縫的銜接,同時保證相互開發之間的隔離性
- 如果在 Flutter 的容器中,使用已有的 Native UI 元件,在 Flutter 與 Native 渲染機制不同的情況下,怎麼保證兩者的無縫銜接以及高效能。
? 監控所有的 OC 方法耗時
含笑飲砒霜:App 卡頓,絕大部分都是因為主執行緒卡頓造成,所以可以通過監控主執行緒執行的 OC 方法來優化程式碼質量和效能問題。
@Damonwong: 作者在學習完《戴銘的iOS開發高手課》 之後,瞭解到瞭如何 hook objc_msgSend 寫了一個如何監控所有 OC 方法耗時的小工具。並詳細說明了程式碼實現的原理,是一個值得學習的文章。
然而,hook objc_msgSend 涉及到彙編的知識,如果對彙編不太熟悉的朋友,可以看一下作者的另外一篇文章 arm64程式呼叫規則
? BlockHook with Private Data
@Parsifal:Block 作為 Objective-C 上的閉包實現,為我們編寫回撥程式碼帶來了極大的便利。享受這樣的便利之餘,我們也會有場景想 Hook 某些 Block 來做一下特定的業務,但事實上 Block 的 hook 並不像 Method Swizzling 那麼簡單。而楊蕭玉的 BlockHook 就解決了這樣的問題。
本文從介紹 BlockHook 是如何解決帶有“私貨”而不能被正常 Hook 的 Block 的問題出發,揭祕了這些特殊 Block 是如何被實現的。由於此類文章資源很少,對於我們想深入瞭解 Block 同學十分值得細讀。文章很短,但乾貨很足。
? [譯]我第一次體驗Kotlin Native
@邦Ben:Kotlin 1.3 的釋出,帶來了跨平臺的能力(彷彿不會跨平臺的都不是好語言),Kotlin 可以生成多個平臺的程式碼(iOS,MacOS,Android,Windows,Linux,WebAssembly),本文中經過編譯器處理後會生成對應平臺的程式碼,部分平臺能力還需要手動進行橋接(跨平臺邁不過的坎)。初看,Kotlin 跨平臺能力還未完備,還需一段發力期,還是讓我們拭目以待吧。
? How I negotiated a $300,000 job offer in Silicon Valley
@老驢:這篇文章其實對國內的程式設計師參考價值不大。文章講的是一個美國程式設計師在跳槽過程中如何利用自己有的多個不錯 offer 來進行相互競價的過程。因為國內的面試情況和北美的不太一樣,所以也不能拿來套用,僅供參考吧。
順便,如果你對北美軟體工程師面試相關資訊感興趣的話,也可以看看之前我寫的一篇文章。
? WWDC session videos recap
@紅紙:今年 WWDC 有超過 100+ 的視訊總量,我們很難跟進每個視訊的內容,但是本文作者為我們羅列了一個視訊摘要清單。我們可以通過摘要,快速把握住此 Session 的重要內容。當然我們也可以通過摘要來辨別視訊內容的價值,是否值得我們繼續細化深入細節。
? Dart | 什麼是Mixin
@CrazyCoderShi:Dart 是一門取眾長的程式語言,語法簡介明瞭,Mixin 更是其相當亮眼的設計,很多人把他理解為 Java 之於 interface ,Swift 之於 extension,小編覺得這麼理解都可以,但是 Mixin 更強大,本文詳細的帶你瞭解 Dart 的 Mixin 究竟為何物。
程式碼
About-SwiftUI
[@水水]:自從蘋果公司宣佈了 SwiftUI 的主題演講之後,大量的文件、示例、視訊和教程就出現了。此儲存庫的目標是收集所有這些資訊,讓你方便的查詢有關 SwiftUI 的資訊。
設計
選一個好的背景讓你的設計更出彩!
@邦Ben:如果你有興趣或者正在做獨立 App 的話,你一定會繞不開設計,因為不是所有人都那麼幸運有一個專屬的設計師搭檔,該文章介紹了一些可以獲取到好背景的一些資源網站,有興趣的可以看下~
內推
位元組跳動 2020 屆提前批內推
位元組跳動面向 2020 屆畢業生的【秋招提前批】限時開啟,iOS/Android 客戶端、前端,後端、測試開發等崗位均開放名額,直走內推通道,提前拿 offer。
- 簡歷傳送至:zengming.0@bytedance.com (推薦標題:校招提前批-崗位-姓名-城市),如:校招提前批-iOS客戶端-王富貴-北京
- 不影響後續秋招再次投遞,歡迎轉發~
- 有效時間截止 2019.07.17
PS:王富貴表示:這是個很好的機會喲,走過路過不要錯過 (~o ̄3 ̄)~
常規內推
老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。
如果你想找工作,點這裡:www.yuque.com/iosalliance…
如果你想招人,點這裡:www.yuque.com/iosalliance…
當然,也歡迎你關注我們每一期的週報,我們會在每期週報底部及時更新編輯內推崗位。
關注我們
我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。
同時也支援了 RSS 訂閱:github.com/SwiftOldDri… 。
說明
? 表示需翻牆,? 表示編輯推薦
預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)