Random Thoughts On iOS Development
August 18, 2012
For some projects I started learning Objective-C and the Cocoa touch framework. The last few years I nearly exclusively worked in Python and some high level frameworks. I used to write a decent amount of C(++) so this is not entirely new but there are some things I want to talk about.
I think Xcode is the most discussed software in the development stack of an (i)OS(X) developer. The last few years I only used vim and since some month [SublimeText2][sublime]. Back n the days I wrote C my IDE of choice was Borland C++ Builder.
I loved it. Great debugger, a fast way to click a GUI together and a great integration. It set the standard to measure IDEs for me. No matter which IDE I used since BCB it never was that great. QT Creator is pretty decent and if you are stoned enough to work with Java Netbeans looks great. But most other IDEs lack something that is really important for me - a great GUI designer which is directly integrated in the IDE.
Drag And Drop GUIs
I refuse to write a GUI. I want to see how the results will look. I want to have an idea how it will feel interacting with it. This is not possible while trying to place buttons with just adding some numbers to coordinate variables.
I love programming but it is not suitable for every task. GUIs are about design and user experience. Something you cannot really test while writing code. Of course I could run my project every time I add something but this is far, far away from fast and easy development.
Beside the designer Xcode is an IDE. Nothing much to add. It does everything you expect. Autocompletion, Intellisense, suggestion corrections for errors while typing - it just works.
Well, to be honest, this comes with a high price. I was aware of the fact that I need a new system, but I did not believe Xcode would push a dual core system to its limits.
Objective-C And The Frameworks
I still find the syntax a bit strange. It makes sense when you listen to explanations and it is strict with the way you call methods and pass arguments, but you are learning a new language. I already have some history with Objective-C, so the syntax did not really bother me that much. Still, sometimes I look at my code, switch to SublimeText, look at one of my Python projects and just think "yes. Python. Beauty.".
The documentation of everything is great. I mean everything. I did not find a undocumented or bad documented part of the framework, yet. Not sure which method to call? Option-Click and you have everything you meed right in front of you.
I looked at some books but did not find one that fully covers iOS5. Some of them mentioned storyboards and ARC but they still sticked to the old iOS4 way doing things. I only have to target iOS5 with my two projects and I plan to use all the nice and handy stuff we get for free.
The best resource I can suggest is found in iTunesU. For free. C193P, a Stanford course. The teacher really knows what he is doing and, for me the most important part, always suggests best practices. Best practices seem to be something most authors do not care about or do not mention. I could be wrong or maybe I had the wrong books.
I only can suggest C193P if you have some experience with C(++) and some general programming knowledge. At least if you want to complete the assignments, what you really should do. I think it would be pretty hard being confronted with things like recursion and follow the course if you have no idea what he is talking about.
Writing iOS applications is not hard if yo already have a basic understanding how to program applications that have more lines than the legendary "hello world". But you need some time and especially a decent system to make your entry in the new and exciting world of the next 99cent app a pleasant experience.