In Part 1 we looked at how we could generate the public API of our Objective-C/Swift frameworks in the Swift language. But what if we want to see how our public API looks in ObjC? Most people have moved on from ObjC so it may not be such a big concern for many, but some of the devs using your frameworks might still be using it from ObjC, so it may be worth making sure you’re not breaking the public API for them unexpectedly.


In an ObjC framework the public API is defined by the umbrella header, which includes all…

If you’ve ever worked on an SDK/framework/library you’ll hopefully have done your best to keep a stable public API for the developers who use it. They’ll be happier if they don’t have to make changes in their code when you ship a new release (unless they want to use something that wasn’t available before of course!).

Sometimes it’s difficult to make sure your public API doesn’t change unexpectedly. …

The provisioning profile file icon
The provisioning profile file icon

As iOS devs I’m sure we’ve all come across the problem of the development version of our app suddenly failing to launch for our testers.

For an app that’s actively in development it may not be a hugely common issue as your latest build will always have your latest certificate and profile, so when that gets renewed it goes straight into your app. …

This blog is related to the SwiftUI video player that’s been progressing over part 1, part 2, part 3 and part 4. But don’t worry! You don’t need to catch up!

WWDC20 and the arrival of the iOS 14 beta has revealed a new View for SwiftUI: VideoPlayer! And look how simple it is to use:

VideoPlayer effectively gives you an AVPlayerViewController embedded in your view hierarchy, so you get Apple’s default controls and behaviours for free.

But beware! …

Update: Check out part 5 for SwiftUI’s own VideoPlayer view in iOS 14!

This blog is related to the SwiftUI video player that’s been progressing over part 1, part 2 and part 3 so you may benefit from reading those first!

For the record, I’ve been using Xcode 11.2.1 for this part of the series.

Where were we?

It’s been a while, but at the end of part 3 I wasn’t happy with how I was observing the player’s time and duration. …

Accessibility is about making things usable for everyone, specifically those who might not be as able as the majority of people (this webpage provides a pretty good introduction if this is all new to you).

In 2019 I went to two iOS conferences, Hacking with Swift Live and iOSDevUK. Both had talks on accessibility and it really inspired me to take the first steps in improving my personal apps for accessibility users.

Near the end of 2019 I decided to take my first released app (over 5 years ago it first graced the App Store) and redo it in SwiftUI…

The basics

I used this blog by Ben Dodson to get started with iOS 13’s OCR functionality, and you should too, it’s a very good introduction with a good example of how you could use it. Be aware that there are a couple of minor errors in the code, maybe Ben wrote it during the beta of iOS 13 and things have changed since then.

I had problems

I copy-pasted Ben’s code and found rather poor results, but he was getting spot on results for much smaller and less clear text.

There was a difference in how we were both getting our images. I was…

Amazing illustration by

Let’s start off with some disambiguation. In iOS 11 Apple introduced split-screen multitasking support on iPad, which allowed two different apps to run side by side at the same time (with the end-user able to decide how much width of the screen each app took up). This feature didn’t allow the same app to run side by side with itself.

Note: split screen multitasking is something Apple will be requiring for iPad apps from April 2020.

In iPadOS 13 Apple are introducing multi-window support for iPad apps. …

Update: Check out part 5 for SwiftUI’s own VideoPlayer view in iOS 14!

This blog is building on the SwiftUI video player that’s been progressing over part 1 and part 2 so make sure you’ve read those first!

In part 2 we were adding in controls for the player, we got the basics done but I was rather stuck on how to get the seek bar (a Slider) to move along automatically as the video progressed, to show where in the video we were watching.

Since then I’ve attended Paul Hudson’s new Hacking With Swift Live conference and the 9th…

If you’re like me you might spend a lot of your time with a maxed-out hard drive on your Mac, which is pretty frustrating!

Installing a new version of Xcode currently (at Xcode 14.3), requires ~42GB of free space, which is incredible. I’ve only got 128GB of space on my MacBook so it’s pretty damned hard to provide Xcode enough room to update.

Due to that, I’ve come across some very useful tips for reclaiming space, especially from Xcode itself.

Dev Cleaner

First up we have a great free (and open-source) app called Dev Cleaner. It’s specifically designed for those of us…

Chris Mash

iOS developer since 2012, previously console games developer at Sony and Activision. Twitter: @CJMash

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store