Transplanting Constraints
Over the past few months I have become quite taken by Auto Layout, Apple’s powerful layout specification framework for Mac and iOS. For the past few years I’ve heard both that Auto Layout is brilliant...
View ArticleCoding Under Par
Brent Simmons reflects on his ambition to stop coding “late at night”: I may think I’m adding productive hours to my day – but I’m not. I’m writing bugs, or, at best, not the best code I could be...
View ArticleShare Extension Iterations
One of the many big surprises at WWDC this year was the news that iOS 8 and Mac OS X 10.10 would support app extensions, which give developers a variety of new ways in which data and services can be...
View ArticleView Bridge Logging
One of the bits of magic associated with app extensions is that when for example a Share extension’s UI is presented in the context of host application, it behaves as though it were hooked into the UI...
View ArticleSpeeding Up Custom Script Phases
Some Xcode projects use a handy feature for extending the build process called a Run Script build phase. These build phases can be added to the linear list of steps that Xcode steps through when...
View ArticleSame Tests, Different Class
I recently decided to tackle a long-postponed refactoring of my source base: to move from my own, custom CFNetwork-based “URL request” class, to something based on the modern NSURLConnection or...
View ArticleConvenient Build Settings
I wrote almost ten years ago about a trick I use in my Xcode projects that lets me set the marketing version for my products in one place, a build setting, and then reference that build setting...
View ArticleUnbuffering Jenkins Output
For years I have used Jenkins to manage all my automated Mac and iOS builds. I have jobs set up to build and release apps “on demand,” as well as integration builds that kick off whenever a change is...
View Article