老司機 iOS 週報 #69 | 2019-05-27

老司機iOS週報發表於2019-05-27

老司機 iOS 週報,只為你呈現有價值的資訊。

你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。

新聞

WWDC19 Schedule

@紅紙:WWDC 2019 已臨近,特此獻上日程表以供各位進行提前查閱。 (另外推薦一款 macOS 下的觀看應用 WWDC。)

新手推薦

? ? 給 iOS 開發者的 Flutter 指南

@邦Ben:作為一名 iOS 原生開發,如何更好的進入 Flutter?該文通過類比 iOS 開發中的概念來解釋 Flutter 相關的內容,都是一些相當常見的基礎內容,非常適合入門。Flutter 的熱載入其實提供很好的入門試錯體驗,畢竟,你只需要儲存一下就知道你寫錯了還是寫對了,因此,入門的學習成本降低了不少。個人感覺,入門曲線要低於 ReactNative。

該文分為上下兩篇:

? UIButton: Padding Between Image and Text

@極速男孩007:本文介紹瞭如何通過修改 UIButton 的 contentEdgeInsets 和 titleEdgeInsets 還有 imageEdgeInsets的值,來改變 UIButton 中圖片和文字的位置。

文章

? Improving your Swift code using value objects

@含笑飲砒霜:值物件是自定義型別,它們是代表我們應用程式一部分的小型精確型別。與值型別一樣,值物件應該是不可變的,值物件通過利用值型別的不變性以及新增自我驗證的能力來幫助我們編寫更易於理解,更容易測試,更安全的程式碼 。我希望您可以試一試。

? @autoreleasepool uses in 2019 Swift

@xiaofei86:本文先是簡單的介紹了 autoreleasepool 在 Objective-C 中的使用場景——在迴圈體中大量建立 autorelease 物件。而 ARC 對 Swift 的優化在過去幾年中進步了很多,根據作者的測試,似乎 ARC for Swift 從不呼叫 autorelease,而是用多次呼叫 release 來替代。所以對於純粹的 Swift 物件我們可能不再需要 autoreleasepool。但在 Swift 開發中 autoreleasepool 仍然有用,因為在 UIKit 和 Foundation 中仍然存在呼叫 autorelease 的遺留 Objective-C 類。以上便基本是本文的所有內容,如果你對 autorelease 的問題還不是很瞭解,可以去繼續閱讀原文。

? Building a NFC Scanner App with CoreNFC in Swift

@享耳先森:在 2014 年 Apple 釋出 Apple Pay ,iPhone 7 和 iPhone 7 Plus 是第一批支援 NFC 功能的裝置。iOS 11 終於釋出了 CoreNFC 框架,第三方 App 可以在前臺讀取 NFC tags,iOS 12 增強了 CoreNFC 的能力,允許在後臺讀取 tags 並通過 Universal Link 技術喚起 App。iOS 13 馬上就要釋出了,相信開發者們十分期待 Apple 開放 NFC 寫入功能。

文章詳盡的描述瞭如何從零開發一個讀取 NFC tags 的應用,甚至十分貼心的介紹瞭如何製作 tags 供測試使用,建議對 NFC 有興趣的開發者們讀一讀。

? Using Codable to make enums with associated values even more powerful

@zvving:帶有關聯值的列舉被用在 Optional、Resutl<T, E> 等場景、為編碼帶來更豐富且嚴謹的語義。作者通過一處網路資料解析的案例,展現定義列舉相比類或結構體的優勢。也詳細介紹了在此基礎上如何實現 Codable 協議,支援持久化。

? Empty Strings in Swift

@JimQ 一個 string 是否 empty 可能有三種不同的含義:1. 長度為零;2. 只包含空白符;3. 可選值為空。針對這三種含義,文章分別給出了最優 & 最 Swift 化的判斷方法。

? OOM 與記憶體

@looping:本文作者從一起可疑的崩潰現象,即從崩潰日誌上看,裝置還有很多可用記憶體,但是排查發現,卻是記憶體分配失敗後對無效地址的訪問錯誤;再結合記憶體分配方式,發現每種型別的記憶體分配地址都是有上限的,也就是說即便在裝置依然有可用記憶體的情況下,如果某個型別的記憶體地址被分配完畢,同樣會引發 OOM 問題。

本文不管是對問題排查過程的描述,還是對 malloc_zone 的分析介紹,都是一份很好的學習資料,感興趣的同學可以深入學習下。

工具

? i18ns.com

@張嘉夫:i18ns.com 是一個免費的多語言翻譯搜尋網站,致力於讓軟體國際化變得簡單便捷。作者從長期的軟體開發過程中發現,超過50%的軟體文案都是可複用的,而在同類別軟體中可複用的內容甚至超過80%以上,於是建立了這個網站。 期望能幫助廣大小微開發者能更廉價更便捷地完成軟體國際化翻譯。

Fledge

@老峰:Fledge 是一個構建 Flutter 專案的 CI/CD(持續整合/持續部署)工作流工具,包括自動構建、測試、簽名和釋出 Apple Store 和 Google Store,支援 Travis、Jenkins、GitLab 等,感興趣的同學還以點這裡

程式碼

Flutter4GitLab

@CrazyCoderShiFlutter4GitLab紀陽同學用 Flutter 實現的一個 GitLab 客戶端,只實現了一部分功能。對於正在學習 Flutter 的同學是一個不錯的一手參考資料, 專案中的一些外掛的使用很是值得學習, 比如:

  • xml 解析
  • html 標籤展示
  • 通過 stetho 連線 Chrome 的 Network Inspector

內推

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

如果你想找工作,點這裡:www.yuque.com/iosalliance…

如果你想招人,點這裡:www.yuque.com/iosalliance…

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

關注我們

我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。

老司機 iOS 週報 #69 | 2019-05-27

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

說明

? 表示需翻牆,? 表示編輯推薦

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

相關文章