Objective C: I really miss namespaces


One feature that I strongly miss from Objective C are namespaces. Inability to avoid name clash between your  classes sometimes really stands in your way.

I am reading S. Kochan’s book “Programming in Objective C” and in one of the examples he creates the class Point. Unfortunately, there already is struct Point defined in mactypes.h.

The solution is easy – rename the darn Point to something like TKPoint … at least that is what Cocoa naming guide recommends. It is probably matter of getting used to it  – but I still find the solution suggested by Kevin Hoffman much more elegant – too bad it is only theoretical. Much nicer than NSHack 😉


XCode annoyances


I have started to seriously play with Objective C and XCode about week ago. So far it was very pleasant experience. I really like the language – feels like Ruby (or Smalltalk if you want) with rocket launcher: very powerful, blastingly fast and dangerous like hell. No array boundary checks as in Java :-).

The XCode was not bad experience either. Here my very long Eclipse and Visual Studio history is going a bit in the way, as the things often works quite different. Not necessarily worse, but different. It would be too early to judge it – not before I get more proficient in both Objective-C and XCode and learn more Cocoa goodness.

Two things however are so annoying, that I have to mention them right now:

1) Setting breakpoints was gamble – sometimes it worked, sometimes it did not. I could not figure out why, until I found here that you must in Preferences -> Debug switch off the ‘Lazy loading symbols’. After re-entering the breakpoints, I finally got it to behave as expected.

2) Trying to add existing files to a projects crashes the XCode with the following:

The console window shows error:

PM Xcode[34563] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '
*** -[NSAutoreleasePool stopObservingModelObject:]: unrecognized selector sent to instance 0x32da240'

which is clearly a bug. I tried to reboot (it was about time after running for over two weeks anyway), no help.

Weird is that I remember doing that before without any problems … Workaround is use drag and drop, of course, but I wish Apple would fix this Really Soon, as it is plainly embarrassing …

I have seen crashes like this in Visual Studio, but Eclipse was rock solid environment despite the very complex plugins ecosystem, so it is hard to go back to use something blowing under your hands …

Cocoa Programming for Mac OS X, Third Edition is out


as long as you are Safari Books online subscriber – see it here.

Completely updated with XCode 3.x and Objective C 2.0. The screenshots even show the iPhone project templates, indicating the XCode 3.1 in some places. So far the only difference against reality I have found is not covering the XIB resource format (which is generated by default) and sticking with NIB. This blog entry has good explanation of the difference.

If you are fan of dead tree-ware books, the official publication date is May 2008, so expect it any day :-).

Strangely enough, as of May 4th, the author’s web (The Big Nerd Ranch) does not really advertise its availability (yet)