Learn more about Swift

How to use async let in Swift?

Updated on: April 24, 2024

In last week’s post, I demonstrated how you can use a task group in Swift to concurrently run multiple tasks that produce the same output. This is useful when you’re loading a bunch of images, or in any other case where you have a potentially undefined number of tasks to run, as long as you […]

Read post

Swift Concurrency’s TaskGroup explained

Updated on: July 7, 2025

With Apple’s overhaul of how concurrency will work in Swift 5.5 and newer, we need to learn a lot of things from scratch. While we might have used DispatchQueue.async or other mechanisms to kick off multiple asynchronous tasks in the past, we shouldn’t use these older concurrency tools in Swift’s new concurrency model. Luckily, Swift […]

Read post

Using UISheetPresentationController in SwiftUI 3

Updated on: June 6, 2022

This post applies to the version of SwiftUI that shipped with iOS 15, also known as Swift 3. To learn how you can present a bottom sheet on iOS 16 and newer, take a look at this post. With iOS 15, Apple introduced the ability to easily implement a bottom sheet with UISheetPresentationController in UIKit. […]

Read post

What’s the difference between a singleton and a shared instance in Swift?

Published on: April 19, 2021

A common pattern on iOS, and in Swift, is to define an instance of an object that you can access from any place in your app. Common examples are URLSession.shared, FileManager.default, and UserDefaults.standard. These objects can all be considered shared instances, or globally available instances. Defining a shared instance is commonly done as follows: struct […]

Read post

JSON parsing in Swift explained using Codable

Updated on: July 4, 2025

Virtually every modern application needs some way to retrieve, and use, data from a remote source. This data is commonly fetched by making a network request to a webserver that returns data in a JSON format. When you’re working with Javascript, this JSON data can be easily decoded into a Javascript object. Javascript doesn’t have […]

Read post

10 things iOS developers should focus on in 2021

Published on: January 4, 2021

I know. This is a clickbaity title. And yes, I know that this list is not relevant for everybody. I know that not every iOS developer has to learn everything on this list. That said, this list is a list of technologies and skills that I think are either already important, or becoming increasingly important […]

Read post

Building a simple remote configuration loader for your apps

Published on: October 26, 2020

Remote configuration is a common practice in almost every app I have worked on. Sometimes these configurations can be large and the implications of a configuration change can be far-reaching while other times a configuration is used to change the number of items shown in a list, or to enable or disable certain features. You […]

Read post

Understanding how DispatchQueue.sync can cause deadlocks

Updated on: June 15, 2021

As a developer, you’ll come across the term "deadlock" sooner or later. When you do, it’s usually pretty clear that a deadlock is bad (the name alone implies this) and if you’ve experienced one in your code, you’ll know that your application crashes with EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) when a deadlock occurs. A few weeks ago, […]

Read post

Dispatching async or sync? The differences explained

Updated on: June 15, 2021

When writing iOS apps, we regularly run into code that is asynchronous. Sometimes you know you’re writing something that will run asynchronously and other times you’re passing a completion handler to code that may or may not run asynchronously on a different dispatch queue. If you’re familiar with using DispatchQueue.main, you have probably written code […]

Read post

Expand your learning with my books

Practical Swift Concurrency header image

Learn everything you need to know about Swift Concurrency and how you can use it in your projects with Practical Swift Concurrency. It contains:

  • Eleven chapters worth of content.
  • Sample projects that use the code shown in the chapters.
  • Free updates for future iOS versions.

The book is available as a digital download for just $39.99!

Learn more