Jeff Mesnil
Weblog · About

TangTouch, Xcode 4 and iOS Development

July 27, 2010

With the releases of iOS 4 and a developer preview of Xcode 4, I am doing some Mac development again.

As I have a few ideas I want to try on iOS 4, I had to renew the Apple ransom tax developer license to be able to put my own code on my own device but I digress...

I took the opportunity to update TangTouch (iTunes link), the game I wrote to learn iPhone development, to support iOS 4.

There has been several releases of the iOS (ne iPhone OS) since I wrote this application but the APIs are fairly stable and I had to change a few deprecated calls only. As a bonus, it now supports multitasking: if you leave the game and come back later, the game will be as you left it.
I released the new version on the App Store. This game was a learning tool and it shows a lack of polish (I am by no means a graphic designer). The game is free so that I don't have to refund it if people do not like it :)

Apple has also released a developer preview of Xcode 4 that I am evaluating. Xcode 4's user interface was redesigned by switching to a single window instead of cluttering the desktop with many windows. The window layout modes are surprising (for example, to display corresponding .m and .h files next to each other) and I have not decided which ones I preferred to use. I still have issues to run Interface Builder inside with XCode 4 ,so I revert to Xcode 3.2 to do some UI work.

I was also interested to see how Git was integrated as I use it for all my personal projects. The user interface to browse a file history is innovative (and fast!), reminding of Time Machine:

At the moment, Git integration is fairly limited. Xcode does not seem to handle Git branches and stashes. I did not find how to browse the whole project either and it does not seem possible to add remote repositories as only the local Git repository is used (no push or pull to remote repositories). I hope that Apple will fully embrace Git and expose in a clean way all its features. At the moment, GitX and the command line are still the best way to interact with Git: I develop first and organize my commits later (to add interactively, merge commit, rebase, etc.).

Coming from a Java background, it is always fun and very interesting to dive into other environments. I appreciate how well-designed Cocoa APIs are (especially compared to so many Java & JEE APIs...) and I like Objective-C even though its incidental complexity is close to Java. It really is the APIs and the developer tools that make it worthwhile to develop on iOS and Mac and have fun while doing it.