A Weekend with iOS

So, decided to change things up a bit this weekend as I was mostly on the go and didn’t have any set time to develop. Rather than continuing my latest Spring + Maven research & polish, I decided to finally crank out some iOS code. I’ve read a few books & tutorials over the past couple months and have a great app planned (with Juna & Andre), but hadn’t really written a single LOC. Luckily, my timing seems to be just right: Apple recently released an update to XCode that made iOS development even easier.

Due to the latest XCode release, my initial toying left me frustrated. After reading up on Objective C, Cocoa and iOS over the past few months I expected to dive right in. I had read all about Interface Builder and had even tried it out, making a few XIB / NIB files and being relatively pleased. After watching a few tutorials to refresh my memory, I dug in and started a new project. None of the menu options matched the examples I had, so I simple chose the Single View Application template and ended up seeing the new StoryBoard feature plopped into the familiar Interface Builder construct.

A little confused at first, it took some tinkering to get used to. I could tell it was easy to add new views, setup transitions between views, and add widgets as necessary. At first I was merely annoyed by yet-another-major-change on a minor version release, but then I realized how much bloat and wiring StoryBoards reduced. Having not actually built an app, I didn’t really take into account how much work it would be wiring views up when they were individual NIBs. Now that they were all in one “scene”, it was easy to layout my app from start to finish… even if it was only a few views.

Anywho, after a few days of some fun research and a little applied knowledge, I’ve found I rather like iOS development and the XCode IDE. As far as creating a data-related app goes, it really isn’t hard. Apple pretty much spoon feeds developers on the nitty-gritty details as XCode is extremely smooth and responsive, which is nice because it lets you focus on your app rather than obscure render bugs or random dialogs. There is definitely a lot to learn in the tooling department, to be sure, but all-in-all it’s just a matter of jumping in with both feet.

Update: Nearly forgot the real purpose of posts like this: catalog things I’ve learned and will likely forget!

  • Don’t use the device ID as a unique identifier, as the methods are deprecated. Instead, use the newly provided UUID features. See http://ios.biomsoft.com/tag/uuid/
  • There’s a few REST frameworks out there, but none that look too interesting. Most people default to ASIHTTPRequest, but the owners page says it’s no longer being actively developed / maintained & recommends you look for something else. I did find RestKit, which looks promising.
  • Apple’s MapKit is incredibly easy to get started with. I had already discovered how to get my current location using CKLocationManager, so it was as simple as plugging in my latitude & longitude. The guys over at RayWenderlich.com have a nice write up that helped connect the dots.
  • And last-but-not-least: some quick Googling turned up an interesting StackOverflow post about Geocoding in Java. Not iOS related, to be sure, but it will be necessary for the project I’m working on 😛