Cocoa was developed using Objective-C, and most Cocoa programming is done in Objective-C. Teaching C and basic object-oriented concepts could consume an entire book. This chapter assumes that you already know a little C and something about objects and introduces you to the basics of Objective-C.
Once upon a time, a man named Brad Cox decided that it was time for the world to move toward a more modular programming style. C was a popular and powerful language. Smalltalk was an elegant untyped object-oriented language. Starting with C, Brad Cox added Smalltalk-like classes and message-sending mechanisms. He called the result Objective-C. Objective-C is a very simple extension of the C language. In fact, it was originally just a C preprocessor and a library.
Objective-C is not a proprietary language. Rather, it is an open standard that has been included in the Free Software Foundation's GNU C compiler (gcc) for many years. More recently, Apple has become heavily involved in the clang/LLVM (Low Level Virtual Machine) open source compiler projects, which are much faster and more versatile than gcc. In Xcode projects, LLVM is the default compiler.
Cocoa was developed using Objective-C, and most Cocoa programming is done in Objective-C. Teaching C and basic object-oriented concepts could consume an entire book. This chapter assumes that you already know a little C and something about objects and introduces you to the basics of Objective-C. If you fit the profile, you will find learning Objective-C to be easy. If you do not, our own Objective-C Programming: The Big Nerd Ranch Guide or Apple's The Objective-C Language offer more gentle introductions.
Chapter 1 mentioned that classes are used to create objects, that the objects have methods, and that you can send messages to the objects to trigger these methods. In this section, you will learn how to create an object and send messages to it.
While working with Objective-C, it is important to remember that foo is just a pointer. In this case, it points to an object.
Take a long look at the last line; it sends the message init to the object that foo points to. We would say, "foo is the receiver of the message init." Note that a message send consists of a receiver (the object foo points to) and a message (init) wrapped in brackets. You can also send messages to classes, as demonstrated by sending the message alloc to the class NSMutableArray.
What about destroying the object when we no longer need it? We will talk about this in the next chapter.
If it seems odd right now, just use it for a while. Most programmers grow to appreciate the Objective-C messaging syntax.
You are now at a point where you can read simple Objective-C code, so it is time to write a program that will create an instance of NSMutableArray and fill it with ten instances of NSNumber.