iOS Tinkering
Posted in diary on March 15th, 2012 by ben – Be the first to commentThe project I finished last week was a proof of concept native iPad application. Given that I’m normally a web-based developer, this was a decent deviation from my normal routine. I want to jot down some impressions for others that may be considering a crossover.
For context, I’ve been developing server-side web applications for over 18 years, using technologies ranging from Perl CGI to Cold Fusion, ASP, Lotus Domino, but most recently, J2EE and Ruby. This means my brain defaults to patterns where there is no state, garbage is reliably collected (conceptually at the end of each hit), and memory is essentially infinite.
I did a couple weeks with iOS when the iPad first came out, almost 2 years ago, and remember struggling with explicit retain/release, stateful screen transitions, and visual app layout.
- iOS5 has Automatic Reference Counting (ARC), so it feels like a garbage collecting environment. Very fluid. Since it’s just a demo, full legacy compatibility isn’t an issue.
- Why aren’t there published stats on iOS version adoption? The only thing google returns is a study from last October, shortly after the ios5 release. If a new app wants to decide the effort to spend on diminishing returns, those stats are critical.
- Test on the device! I was dealing with large bitonal tiff images, which while only 60k on file size, expand to 8M of raw UIImage data. By the way, Instruments doesn’t report on the data allocated by images – you have to study the raw allocations and correlate them.
- Stackoverflow is a lifesaver. I will scan google’s results and click first on anything form that site, especially for all the idioms that are top-of-mind to daily practitioners, but not immediately accessible to those of us that are getting up to speed.
- XCode has come a long way in 2 years. There are some nice integrations between the textual coding and storyboards.
- The power user keystrokes in Xcode snuck up on me. Initially it felt like my only option was point and click around the UI, but I finally found ^6 to navigate the methods of a class, and Command-Shift-O for opening any file using mixtures of its name. The 3 finger swipe up gesture to toggle between .h and .m is brilliant. Now I can believe it to be an efficient IDE. Different, but good.
- If there was any debate about Mercurial vs Git, the fact that Xcode now has native git support should tip the scales. That said, I’ve had funny hanging behaviors, and I end up checking in things from Tower, my preferred GUI for git.
What’s next? I renewed my personal iOS credentials and am transitioning my wife’s custom ipad-optimized web-based point of sale system to a native app. The route this time is more incremental, making heavy use of UIWebView to use the existing web screens, but using native view controllers for screen transitions. This way, I’ll be able to redo functionality one screen at a time.


