Recently, I started developing iOS applications for work. It’s an interesting experience, especially because I once vowed never to do iOS development due to my love-hate relationship with Apple. But the opportunity came up, and the diversity of experience can only be good experience. So here are my thoughts on the past few weeks:
- It requires a change in paradigm from what I’m used to. The way a system is designed in .Net, i.e. the different classes, interfaces, base classes and design patterns that may be used will be different because they have different approaches. Sure iOS app development is based on the foundation of the common MVC design pattern, but there are differences in the way the application responds to events, handles user inputs, saves data, etc. There are many new concepts, such as delegates, which are not prevalent in .Net development. I’m still learning ‘best practices’ in terms of design.
- The names of things aren’t the same. Firstly, every class has a header and an implementation file. Some people don’t like this. I kinda liked the separation of what a class does internally and how it interfaces with others. Also, initially I thought protocols in Objective-C are synonymous with interfaces in .Net development, but they aren’t necessarily. They don’t always have the same uses.
- Like .Net, it’s best to stand on the shoulders of others. Just like Entity Framework abstracts interactions with the database in .Net, there is really no need to create your own frameworks and libraries for what others have done already. Magical Record is really good for accessing and manipulating Core Data. RestKit is a really good library for interacting with RESTful web services.
- Following from that Ray Wenderlich is my new best friend. This site has tutorials which cover everything I’ve needed thus far. Most of my learning has been from here.
- Visual Studio is a really good IDE. Using XCode after spending so long with Visual Studio is like moving from the new Mercedes Benz C-Class to my current student card 2004 Renault Clio. At times I think it’s just a glorified text editor. The debugging process is silly. It doesn’t automate tasks which I assume should be easily automated. But it works. Most times.
- The Mac OS operating system is what Ubuntu should have been. The Unix interface and general use is similar, but it’s prettier, and more user friendly.
- Mobile is the future. Creating apps instead of creating web applications has just shown that with mobile apps, one can truly create a personal experience interacting with user preferences and other user data which can be stored per user on their own device. Also, unlike the bottlenecks of the state-less nature of the web, developing apps instead of web sites becomes so much easier, and allows for so much more.
This journey has recently started, but it looks like an interesting one. I’m still a Microsoft lover and evangelist, but this has opened my previously myopic eyes to a bigger world out there with a larger range of possibilities.