Lessons from my time with iOS

Chris Kellum
4 min readAug 17, 2021

The past two months I have done a deep dive in to iOS programming, and on this interesting journey I believe I have learned a thing or two. For some background I was recently hired as an iOS developer because of my some what mediocre experience in Flutter they thought me qualified. So I had to Learn and I found out it was a lot to learn.

I am sure a few of you took a language class back in high school and realized how much more English grammar you had learned because you were studying German verb tense. Well in a similar fashion learning swift taught me more about my other apps than I thought. In iOS currently there are two options for UI management the older is App/Scene Delegate + View Controllers, and the other is SwiftUI which in my opinion is easier to learn but should be learned second. The first big thing iOS I learned from iOS is the usefulness of having a immediate view of the UI. Both ways of UI management have ways for you to see what the UI of you app will look like. SwiftUI has the in editor preview and unless you are a fully programmatic iOS person you have storyboards that are full layouts of your UI. This helped me not only think about how to work with and pass data through the app but also allowed me to think about how my code should react to the user as they interact with the app.

In most strictly typed languages you have to declare a special type of object to indicate that a function (like a function that returns internet data) might not return anything. In Java it is the Optional<?> wrapper that you have to declare but in swift you simply have to end the type with a ?. This made it functionally necessary to check if an object existed, which sounds tedious but it led to a smoother developing and testing process, because the Null Pointers were rare, and if they did occur is was easy to debug and fix.

Another thing that I learned more of when working with iOS is app life cycle. in Story Board using App and Scene Delegate it is plainly written in to the functions when things happen and why they might be invoked. It also allowed me to really understand the life cycle of the app because if you misplace a block of code it could cause errors or never actually work.

Functional programming also was a thing I didn’t think I would learn as much about as I did while working with swift. Functional programming does making working with internet data easier, which is why I had to implement a lot of functional programing paradigms in my apps. This also helped with reactive swift programming because it relies heavily on functional paradigms and practices.

The last thing Iwant to talk about is the SwiftUI and how apple is implementing declarative programming in to Swift. It is an innovative way to move toward a fully programmatic app though it is still in its infancy while yes technically it has two supported iOS versions out it is still hasn’t hit full integration with 3rd Parties like Firebase or AWS because they are assuming no enterprise solution will be using SwiftUI for production yet. This is a barrier that if you choose to hurdle you will do so with only the support of the numerous iOS developers out there. Though it will take you longer to complete you can probably do it.

I came in to this thinking that apple was an evil company that hated free development, though through these past few months working with the Mac environment not only do I believe that mac loves development they love their users. Meaning that while yes to develop on iOS is a great barrier it is a hurdle that only the acceptable apps and developers can clear. It gives users a guarantee that what they get is good and not spam or a virus. This gets too close to the whole Apple vs Epic which technically I believe that apple should allow users to choose if they want to use another app store, but I also believe that the average user of an iPhone cares all that much about it, so like android it should be a switch you can flip in the settings to allow side loading and third party app stores. I don’t think many people will do it, unless they are tech savvy or are a corporation wanting to side load a company app on to their company iPhones with out need to publish to the app store or pay enterprise fees on preexisting apps. Any way it is a very complex language swift, valuable to learn and really allows a developer to gain understanding of mobile development.

--

--

Chris Kellum

I am a newly released Software Engineer, Experienced in mobile and web development. When not at a computer, I am probably enjoying playing one of my Ukuleles.