Developers striving to learn iOS face a rate of change that’s unprecedented in mobile history.
iOS 17 went out live recently, just weeks after Apple released the latest versions of iOS 15 and 16. The latest upgrade will cut off all versions up to the iPhone X (which itself is only six years old) and comes with:
- On-device machine learning pretty much everywhere.
- Buttonless contact-sharing: all you’ll have to do is tap your phones together.
- New widget features that allow you to control the app without even opening it.
If you really want to learn and master iOS app development, you need a blend of learning resources that cover all these topics, as well as all the basics of iOS application development.
That’s what you’re going to get today.
We’ll show you how to learn iOS development, from base level to hardcore. You’ll discover all the key topics to cover, as well as the advanced and device-specific stuff. And we’ll show you all the iOS learning resources we’ve used to build Bugfender.
1. The basics of learning iOS: Swift and SwiftUI
iOS development used to be bilingual. Developers could write in either Swift or the much older, clunkier Objective-C.
But Objective-C has been phased out over the last few years. Apple has yet to officially deprecate the language, but it’s effectively become obsolete anyway.
So if you want to learn iOS app development, you gotta master Swift. But this is actually great news, because Swift is far easier to learn than Objective-C, which was first released in the 1980s. The syntax is easier to grasp and the memory management is more logical.
If Bugfender’s iOS developers were learning Swift all over again, we’d divide it into three core streams: the fundamentals, the core SwiftUI framework and the unique features of the language.
Essential Swift features
To master Swift programming, you’ve got to master the nuts and bolts. These include:
- Type interface
- Error handling
- Automatic memory management
- Assertions and Preconditions
The Swift environment offers you a lot of plus-points as an iOS developer but it takes a bit of getting used to. So any good Swift programming guide will start from these basics and work upwards.
Learn this with: Hacking with Swift.
Hacking with Swift claims to have more free tutorials than any other site, and we love the way they present practical problems that real developers face.
The language is super-accessible (great if you want to learn iOS development and you haven’t tried any other programming languages before) and there’s an entire ‘Get Started’ section, broken down into individual articles.
The Swift tech docs also offer a great snapshot, although we’d recommend taking a series of tutorials, so you cover all the bases in enough detail. And if you like to learn in a gamified way, you can also take a look at the Swift Playground, Apple’s educational tool which allows you to gain knowledge by solving puzzles. Which is fun.
Apple introduced SwiftUI as a replacement for UIKit, the previous default. It’s the framework for building iPhone user interfaces and it’ll be a core companion as you learn iOS UI.
Swift UI is very code-efficient, but it can be tricky to navigate between multiple screens and integrate your core data into different architectures.
Learn this with: Kodeco, the new version of raywanderlich.com.
Coding bootcamps used to be all the rage in dev world. But they’re losing popularity all the time, and that’s because people like Ray Wanderlich are rendering them unnecessary.
Ray’s ****a veteran dev who consistently provides the best resources to learn iOS development. He walks every mile in the dev’s shoes and offers simple advice, without ever dumbing or talking down to you.
Advanced features of Swift
Swift offers the iOS developer a number of powerful unique features, like:
- Generics, which allow you to create unique code without duplication.
- Protocols, blueprints of the requirements that each function must possess.
- OptionSets, lightweight objects that represent big families of values.
Again, these carry lots of benefits (options, for example, are great for handling null and undefined values) but they present a bit of a learning curve if you haven’t used them before.
Learn this with: SwiftUI for Masterminds
As the name suggests, this is slightly more advanced than the resources we’ve covered above. But it’s great if you’ve been learning iOS development for a while and want to master complex topics, like iCloud data sharing.
Given all the updates and upgrades Apple has released recently, you should check out the most recent version.
2. The core principles of iOS
The previous section provided the building blocks to help you master the Swift programming language and learn iOS development from the foundations. Now let’s go a stage further and look at the core principles of iOS programming.
Every iOS developer will have a different take on the best place to start. But for us at Bugfender, these are the most important things to focus on.
Most apps don’t live in isolation. They fetch data while interacting with servers and other devices.
So, when we’re learning iOS development, we need to know how to properly apply networking to our Swift code. This will enable our apps to connect to the internet and enable functionalities like fetching online data, uploading media and syncing across devices.
Specifically, we need to know how to:
- Call Rest and GraphQL APIs.
- Parse JSON data.
- Get asynchronous networks to call or store the results in Core Data (this will facilitate offline storage of our data, so the app keeps working when there’s no data connectivity).
Where to learn it: Udacity offers online courses for all aspects of iOS learning and its course on networking with Swift is particularly good.
You’ll learn everything from lodging basic networking requests to dealing with connectivity edge-cases, with interactive quizzes to help you the whole way.
(You can also check out Bugfender’s comparison between Rest and GraphQL, which includes a guide on how to build a GraphQL API server).
Apple introduced the second version of StoreKit, its framework for iOS app purchases, earlier this year.
This new version provides a bunch of powerful, Swift-native APIs, as well as improved transaction-tracking. For example, it’s much easier to call transaction and refund history with just a basic ID.
Nonetheless, in-app purchase management is getting ever more complex for an iOS app developer. We’re having to deal with regulatory changes, privacy modifications (like Apple’s App Tracking Transparency) and the growing variety of subscription-based subscription models.
Learn this with: The Apple Developer site. Apple consistently provides some of the best learning resources out there, both to learn basic iOS development and hone more advanced skills. They’ve got a great video on how to use Storekits. Apple is always keen to show the new features and devices, they did it in the past when they launched Apple TV or the Apple watch, so It’s always worth to check Apple developer documentation when you need to learn about something about Apple platform and it’s SDKs.
You should also check out this specific video from the iOS Academy on Storekit 2.
The latest iOS releases (particularly iOS 16 and 17) have introduced animations for widgets and Live Activities. These enable you to provide rich, highly visual shortcuts to your in-app features, so your users can see them on the home screen without having to open the app itself.
This is great for UX and allows you to present unobtrusive information while your user’s screens are locked, so it’s definitely something we should explore as devs.
Learn this with: Again, Apple Developers. They’ve released an excellent walkthrough of this new feature, with plenty of code examples.
And if you want an additional primer, the excellent Code With Chris YouTube page (one of the best iOS learning resources you’ll find anywhere) has created a handy video. In fact Chris offers an entire course on animations with UIKit, which is great if you’ve already got the iOS foundations mastered.
And (plug incoming), our own guide to the top iOS libraries should give you some practical examples of what you’re learning.
A lot of people criticize Apple for its notifications, but we’ve seen plenty of improvements over the last few years.
This is going to continue with iOS 17, which will reportedly introduce smart home notifications – so users get a dashboard of essential information like news, weather and calendar appointments on their screen.
Learn this with: The iOS Academy. They’ve created a tutorial video on Apple’s Push Notification Service, with code bases throughout. Like the rest of their vast iOS Learn library, it’s straightforward, relatable and dynamic.
3. The Advanced Stuff: AI and Machine Learning
Whether you’re in software, manufacturing, HR or logistics, machine learning is an integral part of your landscape. But it’s particularly important if you want to learn iOS development.
Apple says it uses machine learning to “teach our products to understand the world more as humans do.” The iPhone’s helpful assistant, Siri, has long used natural language processing and speech recognition to field user queries. You’ll find further ML innovation in the iPhone’s camera, biometric sensors, battery optimization and predictive keyboard.
With each innovation, Apple is taking machine learning out of the Cloud and putting it on the user’s own device. In iOS 17, this is going to continue. Users will get personalized word and phrase recommendations, and their phone will suggest memorable moments based on analysis of their photos.
For devs learning iOS for the first time, this might seem daunting. Where do I start? Which areas should I focus on?
Well, here are the themes we’ve found particularly important at Bugfender.
Core ML for the iOS developer
Before going into the individual use cases of ML for your app, it’s important to grasp the basics. Whether you’re using ML for games, e-commerce or social media apps, the core principles are the same. Start from the bottom up, and learn the code strings.
Learn this with: Machine Learning with Core ML, an iOS developer’s guide.
This book, by Joshua Newnham, was written in 2018 but it’s still plenty relevant today. We love the way it walks you through the ML algorithms, shows you the core code and provides inspiring case studies from Netflix and other successful apps.
You can get the book here.
ML with Python
Swift is, was and always will be your core focus if you want to learn iOS development. But Python is also important if you specifically want to learn ML.
Python code is clean and simple, and it comes with a vast ecosystem of libraries designed for ML. In fact, dozens of ML algorithms have already been written with Python (as you can see here).
Where to Learn: Deploy A Python Machine Learning Model on your iPhone, by Towards AI. There are lots of individual tutorials out there, but we particularly like this one.
It’s full of code and it breaks down the process into nice, even chunks (like we’re tried to do in this article).
Building mobile ML models with TensorFlow
We mentioned Python’s ML libraries in the last section, and TensorFlow is the brightest star in this particular galaxy.
For those who don’t know, TensorFlow is Google’s open-source platform for machine learning. It works with desktop, mobile, web and Cloud, and while its early iOS models were slightly rudimentary, they’re been getting increasingly sophisticated following the development of the mobile-friendly TensorFlow Lite.
Where to Learn: TensorFlow Lite’s Tutorial Page, which you can find here.
You can tell these guides have been written by Google. The hierarchy of information is really clear, and there are plenty of handy coding tips. You also get a link to the GitHub page if you want to go deeper.
And finally: what to learn once you’ve mastered iOS
The resources we’ve provided today (hopefully) show you how to learn iOS development from start to finish, and earn success for your client in the App Store.
But even when you’ve reached pro level, there’s more to learn. Once the app goes live, you will need to provide support, bug fixing and release updates to your customer base.
One of the key things you’ll want to know is how to properly test your app before releasing a new version. The best way to do this is by automated testing, and you can check our article about the best tools to do it here.
Another important thing is to learn how to deal with app crashes, which even the most skilful iOS developer will have to cope with now and again. No app is truly crash-proof, and we’ll probably never see one.
For this, a tool like Bugfender can help you provide better support to your customers: Bugfender will gather crashes and logs for all your users, wherever they’re located in the world, even if they’re not online. Check us out here.
We hope today’s guide has been useful. Most guides you’ll find on learning iOS development will simply present a list of resources, with no order or reason. But we’re devs ourselves and we want to add value to your lives, not clutter.
A quick shout-out to the sources we used. We found additional info from ZDNet, NetGuru and a bunch of excellent Medium sites, like this one from Naukri Enginering. The Apple Developer site also provided loads of good intel, of course.
But most of all, we’ve drawn on our own experience as devs. We started building Bugfender back in 2015, with the goal of creating an app that could debug any device, anywhere. We’ve made loads of mistakes along the way, and we know how tough it is to learn iOS app development if you’re new.
If you still need pointers to learn iOS development, or just want to chat about the challenges we face as coders and creators, get in touch. We’d love to chat.