When working with iOS apps (or really anything within Apple's ecosystem) I've sometimes found the need to deeply introspect the libraries and executables built in my project to answer questions like "Is bitcode enabled for all architectures?" or "Which architectures was this binary compiled for", and so forth. These aren't easy questions to answer unless … Continue reading Working with multiple architectures & compiled binaries
Everyone has a love/hate relationship with bug reports. For the user, they're a nuisance to file. For the engineer receiving a bug report, it means extra work and the sad realization that your product isn't perfect. I've been frustrated with Apple's handling of bug reports just as much as everyone, but haven't really thought much … Continue reading In defence of Apple’s bug process
I recently wrote about Cocoa / Cocoa Touch frameworks, and in writing about it I was sorely tempted to dive into Modules, since they are pretty important to modern frameworks. But it was such a huge topic, I decided to break it out into a separate post. In a nutshell, LLVM Module Maps were invented … Continue reading LLVM Module Maps to the rescue!
If you don't know the nuts and bolts of how your code is compiled, linked, and executed on target devices, you aren't alone. And lets be honest, this is perfectly fine! That's the great thing about abstraction: not everyone need be an expert at everything in order to be effective. There are times though where … Continue reading Cocoa Dynamic Frameworks
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 only recently become a decent web application. By switching to Jenkins for continuous integration of my iOS app builds I've … Continue reading My App Store release checklist
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 accomplishments and submit the app to the world, only to have several emails sent to you from users who have nothing but difficulties … Continue reading Logging with CocoaLumberjack and TestFlight
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 try. One of the improvements I've added is the ability to customize whether or not you would like to back up your … Continue reading Docset Viewer v1.2 and how to customize iCloud backups
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 show you a few things that I did in my new app Docset Viewer and how I … Continue reading Docset Viewer: Resuming large downloads with NSURLConnection
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 confusing function names, and needs way more code to do the same thing I can do in less code … Continue reading Core Graphics isn’t scary, honest!
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 features to make it functional. And once we finally get our software working bug-free and functioning stably, what do we do? … Continue reading Back To Basics: Simple debugging tips in Xcode