New “When In Use” Location Tracking in iOS 8
If your app tracks the user’s location, you may notice when you run it in iOS8, the location tracking alert asks for permission to “access your location even when you are not using the app“. If your app only accesses the user’s location when the app is running, you can present a less scary message […]
Improving Push Notification Opt-in Rates
Shannon Levis and Alli Brian, Why People Are Turning Off Push: If you are in an industry that suffers from low push opt-in rates, can you overcome this inherent user bias? There is a preconceived notion that these kinds of apps only send self-promotional push notifications, and users have a hard time seeing their value […]

Objective-C Singleton Pattern Updated For Testability
At Two Bit Labs we do a fair amount of unit testing. In places where we use singletons we use a variation on the the Objective-C dispatch_once pattern of thread safe singleton creation. This variation supports resetting the singleton or replacing it with a mock object. That way in our unit tests we can do […]
Objective-C Blocks Cheat Sheet
Blocks are an incredibly powerful addition to Objective-C, introduced in iOS 4. However, their syntax can be maddeningly difficult to remember. Matt Gallagher has an excellent post that breaks down the syntax to help you understand it. If you haven’t read this article, go do it now. Even after working with blocks for a while, […]

Kickstart your apps with the iOS Xcode Starter Project
We created the iOS Xcode Starter Project to make it quick and easy to start a new iPhone or iPad app. Our goal was to create a template to save the hours of effort it takes on a new project configuring essential open source libraries, the unit and functional testing environments, analytics, multiple targets, multiple […]

Block initialization for testability and reuse
Since Apple introduced block support in iOS 4, more and more APIs are moving from delegation to block callbacks. While block callbacks can be declared inline, in most cases you should initialize your block callback in a method that returns the block. This keeps the code that calls an external API succinct, allows you to […]

Initializing UIViewControllers
Most code samples that Apple provides for initializing a view controller look something like this: 
MyController *myController = [[MyController alloc] initWithNibName:@"MyView" bundle:nil]; This always felt like a strange pattern to me. And as Ole Begemann recently pointed out, it’s poor encapsulation. Why does the caller specify which .xib file some other controller should use? Isn’t […]

Announcing Team Stream HD
We’re excited to announce Team Stream HD, the latest product of our collaboration with Bleacher Report. Redesigned from the ground up for the iPad, Team Stream HD is a great way to follow your favorite sports teams and immerse yourself in the content.

Slim down your iOS app by excluding files from production builds
If you use additional files or libraries during development like HockeyKit or TestFlight you’ll want to exclude those in your production app store builds. Likewise, if you have an iPad and iPhone app that share the same Xcode project but are published under separate app IDs, this technique is handy for excluding iPad assets from […]