That’s right. I’m doing Objective-C development. And here are some of the reasons it makes me a little sick:

(1) XCode. If you even think about arguing that one, you’re Wrong.
(2) UITableView. I’ve never seen a more convoluted list view. Sure, it’s powerful. And about 20x more complicated than it needs to be for simple things.
(3) Errors as warnings. Half the things that will break your program will only break at run-time when other reasonable languages can report them at compile time. Sometimes you get warnings. Sometimes you don’t.
(4) Stupid stupid function syntax. Both at declaration and usage. Hey, look, named arguments! Hey, look, the names are pretty much fluff!
(5) NSArray and NSMutableArray. The only language I’ve seen where you can’t store numbers in an array without wrapping them inside an object. The only language I’ve seen where you can’t change what’s in a fixed-size array (not just how big it is). And no type safety on top of that, not that “safety” of any form is really the language’s strong suit.
(6) Comparing a uint to an int treats the int as a uint! So if you have uint a = 1; int b = -2 and do: if (b < a) you get false. I tried to think of something more counter-intuitive. I failed.
(7) No pure virtual (that I know of). You can get the run-time equivalent by putting an assert in the method you intend to be pure virtual, but… ew.
(8) Completely optional “constructors/destructors.” It’s completely up to the caller to decide if something should be properly initialized/freed.
(9) “Private” access is mostly a suggestion. You can completely bypass it by, well, calling the private function if you know it exists.
(10) A wonky animation system in UIView. You’re better off just rolling your own.

This is just preliminary. I’m not ready to fight against Objective-C in earnest. I’m warming up to really hating it. When I’m ready, I expect I’ll lose some friends.

Only a ginga…