• Lightweight dependency injection and unit testing using async functions

    Very often, making code easy to unit test tends to go hand-in-hand with improving that code’s separation of concerns, its state management, and its overall architecture. In general, the more well-abstracted and organized our code is, the easier it tends to be to test it in an automated fashion. However, in an effort to make…

    Read More

  • Podcast: “UIKit in 2021”, with special guest Ben Scheirman

    Ben Scheirman returns to the show to talk about modern UIKit-based app development, how UIKit has evolved over the past few years, and how its API design and usage has been influenced by the introduction of frameworks like SwiftUI and Combine. Sponsors RevenueCat: In-app subscriptions made easy. RevenueCat handles the pain points of implementing subscriptions…

    Read More

  • Using Swift’s concurrency system to run multiple tasks in parallel

    One of the benefits of Swift’s built-in concurrency system is that it makes it much easier to perform multiple, asynchronous tasks in parallel, which in turn can enable us to significantly speed up operations that can be broken down into separate parts. In this article, let’s take a look at a few different ways to…

    Read More

  • Podcast: “Concurrency and Swift-DocC”, with special guest Marin Todorov

    Marin Todorov returns to the podcast to discuss Swift’s new concurrency system and its newly announced backward compatibility, his new book about that topic, and his work on Apple’s open source documentation tool, Swift-DocC. Sponsors Quickly checking out either of the following two sponsors is a great way to help support this podcast, if you…

    Read More

  • Building async and concurrent versions of forEach and map

    If we think about it, so much of the code that we write on a daily basis essentially consists of a series of data transformations. We take data in one shape or form — whether that’s actual model data, network responses, or things like user input or other events — we then run our logic…

    Read More

  • Making async system APIs backward compatible

    Although Swift 5.5’s new concurrency system is becoming backward compatible in Xcode 13.2, some of the built-in system APIs that make use of these new concurrency features are still only available on iOS 15, macOS Monterey, and the rest of Apple’s 2021 operating systems. For example, if we try to use the new async/await-favored version…

    Read More

  • Building editable lists with SwiftUI

    To say that SwiftUI’s List is the equivalent of UIKit’s UITableView is both true and false at the same time. It’s definitely true that List offers a built-in way to construct list-based UIs that are rendered using the same overall appearance as when using UITableView — however, when it comes to mutations, we instead have…

    Read More