Is it possible to use Cocoa, instead of Objective-C? I prefer C++ much more, and I can't seem to wrap my head around "messages" and how to creat objects, and just the overall syntax Objective-C has added to C.

Cocoa requires ObjectiveC, though with ObjectiveC++ you can do most of your code in C++, but the Cocoa parts in ObjectiveC. You could also look up Carbon, which is the root of Cocoa, depending on if everything you need was originally based on Carbon or not.

There really isn't that much to ObjectiveC. (I learned it from Hillegasse's book as well) However, I am like you where I prefer C++, which is why I only use Cocoa for apps that I make that tie in to a standard OS X GUI. (and if the main part of it isn't tied in, I do as much as I can in C++)

ObjectiveC is the same, but you can use C++ constructs alongside ObjectiveC. (I assume you can use some extra things in C++ like for (int i = 0,...), too) You'll generally have an ObjectiveC class to hold your GUI elements etc., then use that to call C++ class's functions, and possibly send messages to your ObjectiveC class from your C++ class's functions.

Objective C is a very pleasant, clean, expressive language -- in every way the polar opposite of C++. If you're put off by the square brackets and "keywords" before arguments, you're doing yourself a serious disservice. Just 'cos it doesn't look like C is no excuse to dismiss it out of hand!

As OSC pointed out, ObjectiveC is quite different in philosophy than C++. Then again, being different doesn't necessarily mean better. ObjectiveC is more about being simple and small. C++ seems to be more about making all types equal (such as with operator overloading, which allows it to not rape primitives the way Java does) as well as having tools to make those types easier to use. (such as templates and references) I suppose a replacement for templates in ObjectiveC would be id, but I don't like it as much for 2 reasons: we get back to the raping of primitives, and though it's kind of nice to be able store anything, type checks can be very useful for catching bugs before they happen due to compiler errors. (besides, you always have the choice with void * in C++) I would have to say, sending any message to anything is pretty nice, though, since it makes receiving messages from UI elements very easy. Although we once again get to the compiler being less of a help. (it will throw warnings saying that a message can't be found, but I honestly get more warnings because one of my classes has a slightly different format but same name as another class', usually in the Cocoa library, or that it doesn't see a message that actually is there)