June 13, 2024Profile photoTony Masek

My First Day Learning iOS Development

After quite a long time solely in web development, I decided I’d like to try to extend my knowledge a bit. Because I’ve always eyed iOS development and wrote a simple game about eight years ago, I decided I wanted to give it a proper go.

DISCLAIMER: I know nothing about this field, so this article is mostly just my thoughts as I’m learning. I fully expect that most of it is wrong or has solutions I am not yet aware of. But the purpose of this article is to document my learning journey. If you know solutions to some of the problems, I will be more than happy if you reach out to me :)

From time to time, I would like to share a few things I learn along the way or what I’m currently wondering about. This won’t be a guide or tutorial, but more like documenting the journey of a total novice into the iOS development world. I will try to share some resources I find along the way as well as some gotchas in case I manage to overcome them.

Swift

The first thing that’s different from when I last dabbled in iOS development is the language. Back then, it was Objective-C; nowadays, it is Swift. Nothing crazy to be honest, but the syntax in certain places will need some getting used to. Currently, I’ve jumped straight into some example apps on YouTube, but it probably won’t hurt to read something about Swift itself. So far, this eBook from Apple looks quite promising.

SwiftUI vs. UIKit

From what I’ve understood so far, for quite some time, UIKit was the way to go when building iOS apps. However, the way forward will probably be using SwiftUI, so I will most likely be focusing on that part. Even though SwiftUI is the way forward, it is still not 100% ready, so sometimes it is still necessary to use UIKit together with SwiftUI.

Xcode

I have to admit — this is one of my biggest pain points. The fact that I (have to/need/should) use Xcode and not an IDE of my choice is a bit annoying. Nothing unbearable, but it just feels heavy and has a learning curve to adjust to all the new hotkeys, etc.

Apart from these, I still haven’t figured out if there is a way to set up an automatic CS fixer or if there is any standard/convention when it comes to this. So this is definitely on my list.

Package Manager

Another topic I need to look into is what the go-to package manager for Swift is and how to use it.

Running the Code on a Physical Device

When I was developing my iOS game, it wasn't possible to test the code on a physical device without purchasing an Apple developer membership. From what I understand, now you should be able to test your code on a physical device for free. However, there is a limit to the number of devices you can use, and you can reset the list only occasionally. The catch here is that you can only reset the list from a specific page that is accessible only with an active membership. Since my limit was reached from years ago, I had to contact support. Let’s see how this goes.

TestFlight

This looks like an interesting way to test out the development version of the app with other users. If/when the time comes, I need to look more into it.

Billing

A hot topic when it comes to Apple, but definitely something I will have to look into as well. I'll have to find out how subscriptions and in-app purchases work on Apple platforms, and possibly how people handle multiple providers (such as Stripe for Web App users alongside Apple for iOS users).

Comparison to Web Development

I'm not sure if I've been doing web development for so long that it has become second nature to me, or if iOS development really is quite cumbersome. My first thoughts were: "Why do I need so much code to do so little?" Additionally, while the documentation appears comprehensive, it feels a bit too extensive and not quite to the point for my taste. There are plenty of resources online, but compared to web development resources, it seems a bit lacking in my opinion. However, since I'm new to iOS development, I probably just don't yet know where to look for answers.

Conclusion

As I mentioned at the beginning of the article, I’m a total beginner, so these are just my initial impressions after the first day. I will try to stick with it for a while, but I will eventually have to decide whether the time I should be putting into it is worth it or if I should go back to what I know best and use my time to create something with the stack I'm already familiar with.

Until next time,
Tony