7 ms·
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, tho
by gnachman 6y ago
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.
- PunksATawnyFill 6y agoHa ha, interesting. To this I'd add major color defects that Apple has introduced with their (long, long overdue) ability to select a non-inverse ("dark") color scheme. For example, the segmented control, which is basically a radio button: You never know how it's going to be shaded or whether it'll be legible. Colors you specify in Interface Builder or even code are largely ignored. The date picker is even worse, for the same reason. I have to programmatically check to see if the user's in "dark" mode and un-hide a light-colored rectangle behind the thing to make it legible. WTF. Apple finally added a method to override the user's color-scheme choice, but it requires iOS 13 or later. Oh yeah: iOS has no drop-down lists. Apple forces you to use their ever-more-hideous spinner-wheel controls. Again, these largely ignore font and color choices, and require a ridiculous amount to space to make them usable. Layout constraints are, for a long while at first, a baffling aggravation. They default to stupid things and report incorrect issues. But once you learn what they're really bitching about, you can make them work pretty well. The most valuable thing I learned about layout: Don't position things using hard-coded constants. Always position things in relation to their superview with "center horizontally" and vertically, then offset them with the multiplier. Then line up sibling controls to each other. You'd think Apple would somehow facilitate gracefully expanding your UI with screen size, but they don't. The above method is really the key to doing so. Oh, and their amateur-hour hard-coded resolutions for graphic assets, with the hokey @2x, @3x nonsense in the filenames... that's embarrassing. And you can't just use SVGs, like you can on Android. All the quibbles aside though... I find the iOS development environment pretty damned well-done. And I like Swift a lot. Even Xcode has come a long way since Project Builder. Going back to Visual Studio, which I loved, I now find it suffers from some of the same defects it did in the early '90s and in some ways falls short of Xcode.