The Descent to Madness (or Cocoa)
I’ve been developing for iOS for a little over 3 years now. I’ve had a few forays into less mobile platforms here and there, with even one very simple OSX app that I wrote a year in that stayed internal to the company (and only crashed some of the time). So when I learned that myself and two other iOS developers would be working on an OSX app for a client, I thought, “I got this; I know iOS, I’m halfway there” and I wasn’t really worried about it. I prepared myself for the project by deep diving into Swift, which was also new to me and by reading Migrating from Cocoa Touch. There are a million blog posts about this (ok, maybe 5) and just as many tutorials on how to make an OSX app in 5 easy steps. And then we started actual development, with designs and requirements in hand, I suddenly realized that Cocoa is actually Cocoa Touch Bizarro Land. Everything looks the same and is named the same, but doesn’t really act the same a great deal of the time. In fact, the distinction between Cocoa and Cocoa Touch is hardly that; Cocoa Touch means Cocoa Touch, Cocoa means Cocoa Touch. Henceforth, for the duration of this blogpost, Cocoa means Cocoa for OSX and Cocoa Touch means Cocoa Touch for iOS. And with that out of the way, let’s talk a little about my struggles in the shadowy wasteland that is Cocoa development.