原创 在 SwiftUI 中創建一個環形 Slider

Slider 控件是一種允許用戶從一系列值中選擇一個值的 UI 控件。在 SwiftUI 中,它通常呈現爲直線上的拇指選擇器。有時將這種類型的選擇器呈現爲一個圓圈,拇指繞着圓周移動可能會更好。本文介紹如何在 SwiftUI 中定義一個環形

原创 使用HSB而不是RGB來定義顏色

有多種方法可以在代碼中定義顏色。最常用的方法是指定三種基色的值 - 紅色、綠色和藍色 (RGB)。本文通過指定色調、飽和度和亮度 (HSB) 的值來探索替代機制的使用。可以以更直觀的方式使用 HSB 屬性來創建顏色搭配良好的調色板。 網上

原创 Swift 單元測試入門

編程語言中的單元測試是爲了確保編寫的代碼按預期工作。給定一個特定的輸入,您希望代碼帶有一個特定的輸出。通過測試您的代碼,能夠給您當前的重構和發佈建立信心,因爲您將能夠確保代碼在成功運行您的測試套件後按預期工作。 許多開發人員不編寫單元測試,

原创 Swift 中的 async/await

async-await 是在 WWDC 2021 期間的 Swift 5.5 中的結構化併發變化的一部分。Swift中的併發性意味着允許多段代碼同時運行。這是一個非常簡化的描述,但它應該讓你知道 Swift 中的併發性對你的應用程序的性能是

原创 Swift 中的 Sendable 和 @Sendable 閉包 Sendable 和 @Sendable 閉包 —— 代碼實例詳解

Sendable 和 @Sendable 閉包 —— 代碼實例詳解 Sendable 和 @Sendable 是 Swift 5.5 中的併發修改的一部分,解決了結構化的併發結構體和執行者消息之間傳遞的類型檢查的挑戰性問題。 在深入探討Se

原创 Swift 中的 async let

Async let 是Swift併發框架的一部分,允許異步實例化一個常量。併發框架引入了async-await的概念,這使得異步方法的併發性結構化,代碼更易讀。 如果你是第一次接觸async-await,建議先閱讀我的文章Swift 中的a

原创 Swift 中的 AsyncThrowingStream 和 AsyncStream

AsyncThrowingStream 和 AsyncStream是Swift 5.5中由SE-314引入的併發框架的一部分。異步流允許你替換基於閉包或 Combine 發佈器的現有代碼。 在深入研究圍繞拋出流的細節之前,如果你還沒有閱讀我

原创 Swift 中的 MainActor 使用和主線程調度

MainActor 是Swift 5.5中引入的一個新屬性,它是一個全局 actor,提供一個在主線程上執行任務的執行器。在構建應用程序時,在主線程上執行UI更新任務是很重要的,在使用幾個後臺線程時,這有時會很有挑戰性。使用@MainAct

原创 Swift 中的 Task

Swift 中的 Task 是 WWDC 2021 引入的併發框架的一部分。任務允許我們從非併發方法創建併發環境,使用 async/await 調用方法。 第一次處理任務時,您可能會認識到調度隊列(dispatch queue)和任務(ta

原创 Swift 中的 Actors 使用以如何及防止數據競爭

Swift Actors 是Swift 5.5中的新內容,也是WWDC 2021上併發重大變化的一部分。在有 actors 之前,數據競爭是一個常見的意外情況。因此,在我們深入研究具有隔離和非隔離訪問的行爲體之前,最好先了解什麼是數據競爭,

原创 Swift 中的 AsyncSequence

AsyncSequence是併發性框架和SE-298提案的一部分。它的名字意味着它是一個提供異步、順序和迭代訪問其元素的類型。換句話說:它是我們在Swift中熟悉的常規序列的一個異步變體。 就像你不會經常創建你的自定義序列一樣,我不期望你經

原创 理解 Swift Actor 隔離關鍵字:nonisolated 和 isolated

SE-313 引入了非隔離(nonisolated)和隔離(isolated)關鍵字作爲添加 Actor 隔離控制的一部分。 Actor 是一種使用新併發框架爲共享可變狀態提供同步的新方法。 如果您不熟悉 Swift 中的 Actor,我鼓

原创 [譯] 解決 iOS 15 上 APP 莫名其妙地退出登錄

在 iOS 15 公開推出後, 我們開始從用戶端收到反饋報告:在打開我們的應用程序(Cookpad) 時他們被莫名其妙的反覆退出到登錄頁。非常令人驚訝的是,這並不是我們在測試 iOS 15 beta 版的時候發現的問題。 如果你是來找修復

原创 JSONEncoder 基礎類型編碼失敗的解決方法

JSONEncoder 在 Swift 中還是非常常用的,最近項目中有需要將APP數據轉換爲JSON格式之後,再發送給服務器的需求,測試過程中,然後報瞭如下錯誤: invalidValue(Optional(1), Swift.Encod

原创 iOS 獲取 IP 地址方法

一直以來我們獲取IP地址方法都是直接百度一查,或者老代碼裏就已經存在這部分代碼然後直接使用。今天歸納一下常見的兩種方法以及如何選擇: 方式一: #import <sys/socket.h> #import <sys/sockio.h> #i