I have been programming with LabVIEW for quite a while and wanted to do some programming on the Mac. That meant getting started with XCode and Objective-C. Getting my head trained to think in the development environment has been harder than I thought.

Some good resources:

MVC

XCode extensively uses the MVC design pattern. In this pattern, conceptually there are three parts to the software. The Model is your business data and whatever logic is important to keep it consistent. The View is the stuff that acts as the UI. (In the Mac world, usually this is built by configuring the UI in the Interface Builder environment.) And the Controller connects the two.

In some schools of thought, the controller has all the business logic that connects the changing of the data and the changes in the UI. This is not just updating of the UI, but the encapsulation of real value-added work done by the program. The View is just a presentation layer, and the Model is mostly a complex persistent state machine. However, the Cocoa way seems to move that business logic stuff into the Model domain, and the Controller is more simply an interface between the M & V.

However, in my experience, the Controller on the Mac usually keeps everything more up-to-date than on other systems. If you make a change in one place, it automagically is immediately updated everywhere it applies. This is courtesy of the way Cocoa's Controllers work together with the software architecture of the Mac.

How to do the graphical part of Cocoa without Cocoa Bindings.

In this case you will write both the controller and model classes. However, to connect to the graphical interface, there must be a proxy object in the .nib file corresponding to your controller. It will be set up with Actions and Outlets corresponding to the controller code. Using the IB environment, you will connnect the IB view to the proxy IB controller class. When the code runs, the actual objects loaded will be from the text code you wrote, but the run-time environment will know how to connect to it because of the proxy object.

How to do the graphical part of Cocoa with XCode Binding.

This technology relies on key-value coding (KVC) and key-value observing (KVO) technology.

Some software resources