When it comes to mobile app development, I’m more of an Android person. I’ve written native Android apps for the most part of my software development career. I got interested in iOS development a few years back and tried to build an iOS app for one of our products. I used Swift 2 and I was relatively successful even though the app didn’t make it to production X_x.
A few weeks ago, I got the opportunity to build one of our apps for iOS users. There I was, design mockups and
REST service documentation in hand, anticipating the excitement and challenges of creating my first iOS app that will make it to production. I had to regurgitate my previous understanding of
Swift and update myself on things that have changed since
I’ll break this review into two parts: The good and the meh. The ‘good’ section will discuss the aspects which I was excited about and the ‘meh’ will highlight the parts that I think need improvements.
1. The Storyboard
The storyboard is a big plus when it comes to designing user interfaces without writing any code. It just works and I’ve found it more comfortable to use and rich which many functionalities than the Layout Editor on Android Studio, especially when when you’re using the assistant editor.
Android developers dread the ceremony involved with creating simple lists. All the code you’d have to write just to get a simple static list that navigates to a different page depending on which item was clicked.
2. Xcode’s integration
Continuing from the previous point, I’ve discovered that the language, the entire development process and the IDE are more connected together than when using Android Studio to create Android apps. For example, I can create multiple screens and link them together using buttons while handling the back stack correctly without having to write any code by myself.
I do not need to give
Views ids to be able to use them in my
ViewController (they are just like
Fragments). I can simply obtain references to the views by dragging them to my
ViewController when using the Assistant editor. Here’s my expression when I discovered that I finished creating a list and linking the list items to different views without leaving the Interface builder:
It is a good thing that Apple introduced this modern language for iOS development. Android developers who have already started using
Kotlin will find it easier to learn
Swift. The two languages are like cousins but be careful when declaring functions. They aren’t
fun they are
func (why Apple!).
Swift as compared to
ObjectiveC is more concise. It is friendlier to look at and to type. There’s also a some under-the-hood improvements for Swift. I’d let you to be the judge.
1. Expensive to start anything
You need a MacBook to start anything. We all know that MacBooks aren’t cheap. If you’re uncomfortable with using the Simulator, you’d have to get an iPhone/iPad/Apple Watch, I feel sorry for you already. Then there’s this $99/year membership fee you’d have to pay to distribute your app to users.
2. Xcode’s Sluggishness
Sometimes Xcode can decide to be a pain in the behind. There’s this annoying time lag that occurs between making a syntax error and it being recognised by Xcode. Sometimes the error will only show when one has triggered a build. Secondly, the storyboard loads as if one is loading up the IDE again, some have suggested using storyboard references to split the designs. I believe with some basic caching, the load time can be reduced. Finally, autocomplete is poor when compared to the way Android Studio (IntelliJ) does theirs.
Sometimes, connecting an
IBOutlet from the storyboard to the respective
ViewController will produce an error that will disappear only when Xcode is restarted.
3. Swift Inconsistencies
Swift has a way of introducing breaking changes with each upgrade, I remember trying to run my first iOS app, the one that didn’t go live, for a friend. I couldn’t build the project again because I updated Xcode and upgraded the project to Swift 3. I experienced something similar whey they stated that they renamed
Here’s what apple said in their
Now look what happens on the playground:
That’s it folks. The development experience has been relatively good for me. The transition from Kotlin to Swift has had a few hiccups. With more updates to come from Apple, I believe they can make the development experience to be better. 👋🏻