When iOS apps begin to grow, we need to handle some kind of global state. The global state usually contains two kinds of information:
Whether the user is logged in or not is metadata. The app can use that information to show the profile page (when the user is logged in) or the login page (if the user needs to log in).
Whenever a team grows, it decides to adopt a specific architecture and some specific pattern. It can use MVVM or VIPER. It can use UIKit or SwiftUI. It can use protocol-oriented programming or the Protocol Witness approach. Many of these patterns require some boilerplate that we never enjoy writing.
Any Xcode developer is pretty familiar with the “New File” screen that can be invoked by typing ⌘+N.
Last week I was invited as a guest to a podcast called PointerPodcast. In that episode, I was asked a few questions about iOS Development and writing technical articles on Medium.
The podcast is in Italian and this is the link to the episode. Therefore, I asked the podcast owners the permission to translate and publish it.
Note: The translation is not a literary translation of the interview. I changed a few words to…
Back in 2018, during the WWDC, Apple announced the Swift Package Manager (SPM or SwiftPM). The goal of SPM is to allow developers to define modules that can be reused across different applications and platforms. A package could be defined to work with both iOS and macOS, for example, and therefore its features can be shared across tools and apps on those platforms.
In the beginning, the package manager was quite limited: It did not support module-specific resources, for example. During the following years, the SPM has improved a lot. It now allows developers to define executables other than packages…
When developing an app, we might need to add some custom logic when a
UIView is loaded. For example, we may need to perform a network call to fetch some data from the backend. On other occasions, we may need to clear up some resources when the view is about to be dismissed and hidden from the user.
Although these ideas are simple, there are a few nuances in iOS development. It may be helpful to explore them together.
Last week, we started a new project where we implemented a very basic calculator application from the command line.
We developed that project to explore the ArgumentParser library provided by Apple that gives us automation to read the input of the user from the standard input.
This week, we will dive deep into some more advanced features. Before starting, I suggest taking a quick look at last week’s code to refresh some concepts.
Our app is using the Comand pattern as the main architectural style. Whenever we need to add a new command, we know we have to extend the…
Swift is a well-rounded language, and it is becoming more used every day. Its main usage is for iOS and macOS apps, but it is used also for scripting, command line tools (CLI), and even for backend and web development.
In this article, I’d like to explore a library provided by Apple to create a CLI application: the Swift Argument Parser. This library encapsulates the logic of parsing the input of the user when issuing a command in the Terminal. The library does that by using property wrappers. The Swift’s type system makes everything safe.
Thanks to this library, we…
For every story, there are always two sides. Last week, we talked about how to prepare a good PR. Today, I’d like to talk about how to perform a good code review.
Code reviews are a very important part of every developer’s day. The two main goals of a code review are to:
Additionally, it happens quite often that the reviewer learns something new in the process of performing the code review. …
Creating a PR and waiting for a code review is a standard approach to writing code. PRs and code reviews are very important in every developer’s day. They achieve different goals:
The process is usually split into two steps: A developer prepares a PR and another developer (or several) performs a code review, pointing out the good parts and the parts that can be improved.
Today, I’d like to go through the first step, highlighting how we can create a PR…
If you follow my blog, you’ll know that I love concurrent programming. I’m very fascinated by the idea of running different tasks at the same time, collecting the results, and saving a ton of time.
This week, while working on my team's current project, I discovered a new API that I was not aware of:
DispatchQueue.concurrentPerform. This small and nice API lets us run batches of work together and will handle all the concurrency for us.
Let’s explore it together.
When working with a new API, the first thing to do is to read its documentation:
Hey there, I’m Riccardo. Senior iOS Engineer at TrueLayer and ex-Spooner. I breathe iOS development: apps and tools. I love to share my knowledge with others.