Introduction to Structured Concurrency in Swift

Structured concurrency is a programming paradigm aimed at improving multithreaded code’s clarity, efficiency, and robustness. It’s a fresh approach that allows you to manage concurrent tasks in a predictable, logical structure. Hence, “structured” concurrency. What is Structured Concurrency? Structured concurrency fundamentally means that the lifetime of concurrent tasks is bound and managed. In essence, when a block of code starts a concurrent task, that task is ensured to finish before the block of code concludes....

Xcconfig Explained

Xcode project files can get messy as projects grow in size and complexity. The complexity is increased when there are multiple environments or configurations, each with unique settings. Xcconfig files are a way to manage this complexity. Let’s dive into understanding how to use Xcconfig files in Xcode projects. What is an Xcconfig file? An Xcconfig, or Xcode configuration file, is a plain text file used by Xcode to externalize configuration settings for build systems....

May 15, 2023 · Mike Gopsill ·  Tools

Target Dependencies vs Link Binary with Libraries

When developing iOS applications with Xcode, it’s essential to understand the difference between “Target Dependencies” and “Link Binary with Libraries.” These two options found in the Build Phases settings of a target play vital roles in defining how your app interacts with external code. In this article, we’ll discuss what these options do and how they are different. Understanding Targets Before we delve into the differences, let’s first understand what a ‘Target’ is in Xcode....

May 12, 2023 · Mike Gopsill ·  Tools

Codespaces with a Swift Package

In this post we will learn how to build a Swift Package using a GitHub Codespace. I did this recently as an experiment. It was easier than expected. The codespace was quick to build and test on too. It could be a useful tool when you have a poor local environment, e.g. an aging Intel MacBook. That said, there’s limitations too. What are Codespaces Github codespaces are development environments in the cloud....

February 16, 2023 · Mike Gopsill ·  Tools

Working with Subjects in Combine

In this blog post, we explore the concept of subjects in the Combine framework. We’ll look at two types provided by Apple: CurrentValueSubject and PassthroughSubject. We’ll explore their differences and when to use them. What are Subjects? Subject is a type of publisher in the Combine framework that adheres to the Subject protocol. It has a .send(_:) method that allows developers to send specific values to a subscriber. Subjects put values into a stream....

Programmatically Navigating a UIPageViewController using a UISegmentedControl

Let’s learn how to navigate a UIPageViewController using a UISegmentedControl in iOS. The UIPageViewController provides a way to display pages of content, where each page is managed by its own view controller. The UISegmentedControl displays segments and allows users to switch between them. We’ll begin by setting up the UISegmentedControl and UIPageViewController, then move on to connecting them by programmatically navigating the UIPageViewController based on the selection in the UISegmentedControl....