How do you know?


#1

Just a general inquiry. How in the world do you know that things like “tableView:setObjectValue:forTableColumn:row:” exist? It took me forever to find this. I didn’t see anything useful in the header definition for NSTableView, and looking through the class definition was fruitless. I finally found this in the NSTableViewDataSource Protocol Reference, which was the second to last thing listed when option-clicking on NSTableview. I feel like I must be missing something since it took me so long to locate this method.


#2

In addition to the class references, make sure you also check out the companion guides that apply to any class in which you are interested. They are a great tool for exploring the use of your favorite (and least favorite) classes.

For example, in the class reference for NSTableView, there is a reference to the Table View Programming Guide and Drag and Drop Programming Topics. In the Table View Programming Guide, there is a chapter called “Populating Cell-Based Table Views” where the method in question can be found.

These programming guides exist throughout the documentation and are often a very valuable reference. Don’t forget to check the sample code as well, but I tend to prefer the Programming Guides when I want more information on a class than what is covered in the class reference overview.


#3

Additionally, in Ch. 6, when putting together the enhanced SpeakLine app, the books says (or hints) to add NSTableViewDelegate to SpeakLineAppDelegate.h; doing this alone would not bring up the prototype for tableView:objectValueForTableColumn:row: in the Interface Builder editor’s completion feature. I had to also add NSTableViewDataSource to the protocol list to get this to happen.

As a corollary, I am learning that if IB’s editor does not automatically suggest the completion of the method name I am beginning to type, probably a protocol entry is missing in the corresponding header file.