Swift 週報 第三期

語言: CN / TW / HK

前言

本期週報開始,將會引入推薦博文模組,主要為大家分享展示優秀的 iOS 技術博文,如果大家閱讀到優秀的文章歡迎在文末留言告訴小編,大家資源共享共同進步。

iPhone 13 新品上架,你們都買了嗎?蘋果聲稱,iPhone 13 擁有全新的雙攝像頭系統,採用超快的 A15 晶片,提高電池的續航能力。

我們不僅要關注新的 iPhone 13,幾天前,Xcode 13Swift 5.5 也一起釋出了。這是 Swift 5.5 更新的列表,這個版本釋出了很多新功能。Xcode 13 的釋出說明可以在這裡找到:iOS & iPadOS 15 Release Notes

現在已經開始將併發功能向後部署到舊的 Swift 版本上。

為了 Swift 社群週報持續穩定的釋出更新,我們希望邀請 Swift 愛好者參與週報編輯,同時邀請贊助商對我們平臺贊助支援。

新聞和社群

Cory Benfield 告訴我們 Swift Crypto 2.0.0 已經發布

入門任務

SR-15218: [Compiler] 增強 CGFloat/Double 之間的可互轉,允許 optional 之間的互轉

Commits 和 pull requests

salinas-miguel 的 PR 已合併:刪除了 Swift 專案對 macOS 上的 Foundation 的依賴

Doug Gregor 建立了一個 pull request 對 Swift 向後部署支援併發

正在審查的提案

SE-0323Asynchronous Main 語義 正在審查中。

程式設定通常發生在 main 函式中,開發人員希望在程式的其他部分執行之前執行操作。Objective-Cc++C 都有初始化,這些初始化在 main 入口點執行之前執行,並且可以與 Swift 的併發系統互動。在 Swift 併發模型中,開發人員編寫的非同步 main 函式被包裝在一個任務中,並在 main 入口點執行時被放入到主佇列中。如果初始化時在主佇列中插入了一個任務,那麼該任務可能會在 main 函式之前執行,所以設定是在初始化任務執行之後執行的。

SE-0324對 C 函式的指標引數放寬診斷正在審查中。

C 有特殊的指標別名規則,例如允許 char * 為其他指標類型別名,並允許指向有符號和無符號型別的指標別名。 某些 C API 的可用性依賴於在這些規則的邊界內輕鬆轉換指標的能力。 Swift 通常不允許型別化指標轉換。請參閱SE-0107 UnsafeRawPointer API。讓 Swift 編譯器在呼叫從 C 標頭檔案匯入的函式時允許在 C 規則內進行指標轉換將顯著提高互操作性,而不會對型別安全產生負面影響。

Swift 論壇

Ashley Garland 介紹一些新實驗出來的 Swift Package Manager 程式碼段

我們都知道通過示例學習是很棒的,尤其是對於程式碼。 我想建立最小、最簡單的方法來為 Swift packages 提供示例程式碼,我剛剛在 Swift Package Manager 中完成了一些正在進行的工作。

Filip Sakel 提出了一項改進 Property-wrapper-related 的初始化的提案。

SE 0258 引入了 property wrappersSE 0293 使用類似函式的宣告對其進行了擴充套件。 今天,property wrappers 初始化由於其日益增長的多功能性而表現出不一致。 具體來說,成員初始化使用複雜的、記錄不足的規則,並且 projection 初始化仍然有限。該提案將簡化具有包裝屬性的型別的合成成員初始化,並擴充套件 projection 值初始化以包括全域性、型別和區域性包裝屬性。

Jordan Rose 開始討論刪除 Optional 變數的隱式初始化

在 Swift 6 中,可選變數與所有其他變數一樣,預設情況下不會初始化。 區域性變數和全域性變數得到修復,新增 = nil。 屬性僅在附加到有關未初始化變數的錯誤的註釋中修復,這顯然不是正確的做法,只有 Swift 5 中需要這麼做。 不過,遷移者也可以自動應用該修復程式。

推薦博文

iOS 系列

如何在 Swift 中實現狀態機?

簡言之:我們通常稱作的狀態機是有限狀態機的簡稱,它是一種數學計算模型

避免 Swift 單元測試中的強制解析

強制解析(使用 !)是 Swift 語言中不可或缺的一個重要特點(特別是和 Objective-C 的介面混合使用時)。它迴避了一些其他問題,使得 Swift 語言變得更加優秀。

iOS 識別虛擬定位調研

最近業務開發中,有遇到我們的專案 app 定位被篡改的情況,在 android 端表現的尤為明顯。為了防止這種黑產使用虛擬定位薅羊毛,iOS 也不得不進行虛擬定位的規避。

實時文訊

Xcode 13 更新了哪些內容

開發者需要了解的 iOS 15

Xcode 13 正式版釋出,來看看有什麼新特性

SwiftUI 系列

為什麼 SwiftUI 的修飾符順序很重要

每當我們將修飾符應用於 SwiftUI 檢視時,我們實際上都會建立一個,應用了更改的新檢視 —— 我們不僅僅是修改現有的檢視。

為什麼 SwiftUI 的檢視使用結構體

如果您曾經為 UIKitAppKit(Apple 的 iOS 和 macOS 原始使用者介面框架)程式設計,您會知道它們使用類而非結構體來構造檢視。SwiftUI 更喜歡將結構體用於整體檢視。

如何結合 Core Data 和 SwiftUI

SwiftUICore Data 之間相差將近十年。儘管時間相距遙遠,Apple 還是投入了大量工作以確保這兩種強大的技術能夠完美地相互配合使用,這意味著 Core Data 就像始終以這種方式設計一樣,已整合到 SwiftUI 中。

關於我們

我們是由 Swift 愛好者共同維護,我們會分享以 Swift 實戰、SwiftUI、Swift 基礎為核心的技術內容,也整理收集優秀的學習資料。

感謝 SwiftWeekly 與我們的合作,開啟 Swift 週報中文版釋出之旅。

週報倉庫:https://github.com/SwiftCommunityRes

後續還會翻譯大量資料到我們公眾號,有感興趣的朋友,可以加入我們