Back to Basics: Using KVO
One of the things I like most about Apple’s iOS SDK is the consistent and easy-to-use API they provide. Across all their different frameworks there’s a pattern at work that makes using their classes...
View ArticleUsing GCD and Blocks Effectively
With iOS 4.0 Apple introduced two new technologies to the iOS platform: Grand Central Dispatch, and blocks. Simply put, it is to multi-threaded programming what fire is to a barbecue. Sure you can do...
View ArticleBuilding a static library with Jenkins
One of my pet peeves is Open Source iOS libraries distributed as just a collection of Objective-C classes, rather than being bundled as a static library. I know a lot of people prefer it that way, but...
View ArticleBack To Basics: Simple debugging tips in Xcode
As developers we spend most of our lives dealing with broken and barely-functional software: our own software. We do our best to make the applications we develop somewhat less broken and try to add...
View ArticleCore Graphics isn’t scary, honest!
For anyone who’s developed exclusively with UIViews on iOS may take the title of this post a bit oddly. “WHAT?!” they might say, “Are you insane? Core Graphics is not only a C-only API, but has...
View ArticleAnnouncing Docset Viewer v1.1 for iPad and iPhone
Over the years my blog has transformed from the usual “Wordy geek ranting about first-world problems” content toward more educational and informative posts on what I do for a living: developing awesome...
View ArticleDocset Viewer: Resuming large downloads with NSURLConnection
As I’ve shown in my previous post announcing Docset Viewer, I want this series of posts to be more than me talking about my new app. In keeping with the instructional nature of my site, I’m going to...
View ArticleDocset Viewer v1.2 and how to customize iCloud backups
I’ve recently released version 1.2 of Docset Viewer, which fixes a number of bugs people experienced with the previous version. If you had problems with the previous release, please give this one a...
View ArticleLogging with CocoaLumberjack and TestFlight
Consider the following situation that happens far too often in mobile app development: You’ve just released an app that works perfectly for you, and you’ve tested it extensively. You’re proud of your...
View ArticleMy App Store release checklist
For the longest time it seemed that releasing an update to an iOS app was a random whack-a-mole process that I’d invariably get wrong in some way. It was maddening, especially since iTunes Connect has...
View ArticleDocset Viewer update v1.5
The past year has been quite a ride, to say the least! I have been so busy with work, creating awesome features and technologies on iOS apps that over a year has raced by without an update to my blog!...
View ArticleDon’t live to work…
Many people have heard the phrase “Don’t live to work; work to live”. This usually means that the goal of working should be to enable you to live your life, rather than allowing work to consume your...
View ArticleForcing a method to run on the main thread
You know how many times, as an iOS developer, you want to ensure some method or delegate call occurs on the main thread? We do this dance countless times, and while it’s straight-forward enough, it...
View Article