Adding Swift Package Manager Support to a Legacy Objective-C Project

I recently needed to add Swift Package Manager support to a legacy package that one of my projects was using. The package was originally distributed with CocoaPods. The primary reason for migrating from CocoaPods to SPM is that CocoaPods entered maintenance mode a few months ago. Removing it will future-proof our projects and allow us to use the latest features, such as the buildable folders introduced in Xcode 16. Assumptions Since this was an internal package, I did not need to maintain CocoaPods support. The goal was to replace it entirely with SPM. It is certainly possible to keep both, but that would require some additional work. The project I was working on is considered legacy; no one has touched it in about six years. Once this task is complete, I hope no one will need to update it for another half-dozen years. This allowed me to take some shortcuts, like integrating a third-party dependency directly into the codebase instead of spending time updating it to the latest version. All internal dependencies of your framework already support SPM. With that said, let’s get started. ...

June 3, 2025 · Bartosz Kunat

Getting Back Up to Speed with Objective-C in 2025

I’ve mostly moved away from using Objective-C over the years. While it still appears in some of the projects I work on, it’s been quite some time since I last had to work on a feature written entirely in Objective-C. These days, I typically encounter it when integrating a new feature written in Swift into an older codebase. Recently, however, I needed to brush up on Objective-C for a job I was interviewing for. ...

April 3, 2025 · Bartosz Kunat

Creating a New Objective-C Project in Xcode 16

Update: 26/03/25 It looks like Objective-C is still an option in the default iOS project template. You can access it after setting the Interface to “Storyboard”. I hadn’t realized these dropdown menus were interconnected. All credit goes to Douglas for spotting this! tl;dr use macOS → Application → Game or Command Line Tool Recently I wanted to refresh my memory on Objective-C. My first thought was to open Xcode, create a new project with language set to Objective-C and play with it. To my surprise, none of the iOS Application project templates allow you to select any other language than Swift. ...

March 25, 2025 · Bartosz Kunat