Hacker News new | ask | show | jobs
by gnachman 2273 days ago
I write both: iOS during the day and macOS at night. iOS is significantly less buggy and has less legacy baggage than macOS. iOS has some features that macOS doesn't, so there is more to learn. I spend a lot less time working around platform brokenness on iOS than on macOS. macOS lets you do a lot more than iOS in ways that are unmaintainable (e.g., private APIs), which helps you create accidental complexity for yourself.

Both platforms have a long tail of little-known behaviors (such as accessibility features) that make it hard to create well behaved applications. But iOS mostly just works (once you know which features are toxic and avoid them), while macOS's brokenness has completely metastasized.

1 comments

I’m curious which features you would advise a dev to avoid in iOS, because their problems, i.e. toxicity. I’m getting more into iOS programming and it would be great to know some pitfalls on the roadmap.
Anything added after iOS 6 is the cheeky answer, but it’s not totally wrong either. Auto layout is incredibly hard to debug; it’s great when it works right, though, fwiw. The audio APIs are a garbage fire (equally on both platforms, at least!) Mapkit has a lot of sharp edges if you try to do anything more than Apple envisioned, which is true of a lot of iOS and macOS APIs. View controller transitions are a mess, but they may have fixed the bugs by now—I’ve stayed away since being traumatized by them five years back. The Metal shader compiler is an absolute shit show of bugs on the Mac, but is better on iOS. Core Bluetooth has caused me pain (just doesn’t work sometimes). Stringly types objective c-isms like KVO. In app purchases are a mess (I’m told, haven’t used it myself). CoreData might look like a good idea but you will live to regret it if it’s an important part of your app. UITableView is really powerful but also gets complex fast, with legacy baggage showing up when you try to get fancy (like auto layout and dynamic row height). The security API is hard to use correctly, also on both platforms.

Mostly though Xcode is the worst piece of software I’ve ever used, besides Wind River’s IDE and Windows ME.