How iOS Development Has Evolved Over The Past 8 Years

ios development

I’ve been a full-time iOS developer for over 6 years now and I started learning iOS development 8 years ago. A lot has changed over the years. In this post I want to talk about the biggest changes I’ve experienced.

Swift

Obviously one of the biggest changes in iOS development over the last 8 years is the introduction of Swift at WWDC 2014. And for me it was the biggest surprises I’ve ever experienced watching an Apple event because there are was absolutely no leak beforehand. So Swift was a real surprise and for a developer it was just huge. Don’t get me wrong: Objective-C is a great language and there is still a lot of value in learning Objective-C, but in my opinion Swift is just better and now it’s the primary programming language for developing iOS apps.

Wherever there is light, there is shadow. So at the beginning there was also a lot of criticism about Swift. Compile times were very slow, the Xcode integration was not very good and there were a lot of code breaking changes with every new Swift version. And not all of these problems are solved yet. For example, there’s still no ABI stability (but it will come with Swift 5 hopefully) and I still have the impression that compile times are far away from being optimal.

But let’s face it: All the obstacles are worth it. Compared to the Objective-C times, iOS development has been become both easier and more powerful. And the most important part: It has become more fun.

Memory Management

When I began developing iOS apps, you still had to count references manually. If you haven’t witnessed that time, here’s a small overview:

By default, each reference, that points to an instance of a class, is a so-called strong reference. As long as there is at least one strong reference pointing to an instance, this instance will not be deallocated. When there’s no strong reference pointing to that instance left, the instance will be deallocated. These references have to be counted.

So far so easy. But before the introduction of ARC (Automatic Reference Counting), you had to do the counting manually by using code. Although it sounds simple, it was the root cause of many bugs. And debugging these bugs was even more difficult. But then ARC  has been introduced with Xcode 4.2 in October 2011. ARC is a compile time feature: It inserts the reference counting code automatically, so that you don’t have to deal with it anymore in most cases.

However, there are still situations, that ARC cannot handle correctly. In these situations a so-called retain cycles can occur. And here it’s an advantage if you have witnessed the manual reference counting time.  This is a very important topic and if you want to learn more about it, take a look at this blog post about retain cycles.

Auto Layout

Implementing a layout used to be very easy in the early days of iOS development because there was just one screen size (the iPhone). So you could just work pixel perfect. Over time though, there were more and more screen sizes like the iPhone 5, 6 and 6 plus and even different iPad sizes.  It was very clear that it was not possible to handle this with the with the original layout system.

So Apple introduced Auto Layout, which was already in use for Mac OS development. It’s very powerful but also a little bit complicated. With the introduction of the StackView and the possibility to mix Auto Layout and Autoresizing Masks, Apple took account of this. I used to assume that there will be another new layout system at some point, but meanwhile I do believe that Auto Layout is the best solution, especially if there are classes like StackView, that makes life much easier. By the way: In Android development there has been a constraint layout introduced as well.

Community

At the time of writing, there are 586,576 questions tagged with ‘iOS’ on Stack Overflow. In the list of the most used tags, this is place ten. There are also a lot of blogs, YouTube channels and Twitter accounts, that focus on iOS development. Also on GitHub there a lot of repositories concerning iOS development. So if you have a question or a problem, it’s very likely that you will find the answer very quickly. And even if that is not the case, you will probably find someone, who can help you. That is a very important aspect for choosing a platform you want to develop for because it makes your life much easier and you become much more productive as well.

When I started iOS development, there was of course already a community. However, it has grown massively since then, which makes a big difference.

Ecosystem

The iOS ecosystem has grown massively as well over the years: There are more than 1.3 billion active iOS devices out there, so that you as an iOS developer have access to one of the biggest and most important software markets in the world. iOS development used to be called a gimmick, but now it’s a serious business. And that holds not only true for the consumer market, but for the business market as well. Many companies have their own In-House iOS apps to support their business processes. 8 years ago the story was completely different. Sure, the iPhone was already a big success, but how big the ecosystem eventually would become was not predictable.

And now there is not only the iPhone, but the iPad and the Apple Watch as well. It’s quite interesting that the Apple Watch is not viewed as such a big success, but in fact it really is. And it’s still growing. Although the iPhone sales are stagnant at the moment, Apple’s service area (which includes for example the App Store, iTunes and iCloud) has been growing massively over the last years. This shows that the platform is very vibrant. And in my opinion this trend will not stop in the next years. iOS has come to stay.

Resources

Title Image: @ Sergey Tinjakov / shutterstock.com