Manual
 
Welcome
 
Introduction
Symbol Explorer enables you to view the meta-data of most of the AppKit and Foundation libraries.  In terms of meta-data, the following is available to view:
  1. Classes & Protocols
  2. Static & Instance Class/Protocol Methods
  3. Type Information (struct / union definitions)
  4. Hierarchy (uses of protocols, super-classes)
 
The following is not available:
  1. Category Information (this is collapsed by the Mach-O loader at process load)
 
Symbol Explorer only shows the meta-information for objects loaded into the process space, this implies that Intel Mach-O information, and other applications are not (as yet) introspected/available.  If you require this, then search the internet for class-dump - a well known program that will extract class/structure/protocol/method/type information from any Mach-O binary file.
 
Quick Start
 
The following quick-start will guide you through the main features of the program.
 
Figure 1 - Main Screen Shot
1 2 3 4    5    6
Figure 2 - Searching for ‘NSString’
If you were to open the disclosure rectangle for NSString, you would see all of the methods in the NSString class, along with the methods implemented by it’s protocols.
 
Matching Methods Only
 
Using the search feature, in combination with the ‘Matching’ methods only checkbox is a powerful way to find what you are looking for, fast.
 
For example, if I wanted to find out if there were any methods that dealt with ‘base64’ encoding/decoding, I could enter ‘base64’ into the search field and then hit the ‘Matching Methods’ only checkbox.
 
I would then be presented with only the classes and/or methods that had something to do with the ‘base64’ token.  This means either that the class/protocol name contained the token, or a method within the class/protocol contained the token.
 
Try it out - you should see the following screen.
Figure 3 - Searching for ‘base64’
Note that here you do not see any methods that don’t have ‘base64’ in the name.
Presently, Symbol Explorer opens a single window at startup - showing a list of all the meta-data for the AppKit and Foundation frameworks.
 
Areas of the Screen
For purposes of this quickstart guide, I’ve assigned a name to each screen control or area, to which I’ll refer to later.
 
History
Search Field
Matching Methods
Incremental Search
Class List
Pseudo-Header
 
Searching with the ‘Search Field’
The search field’s purpose is to restrict / limit the number of classes contained in the class list to any class/protocol or method name that contains the search token.
 
For example, a search token of ‘NSString’ produces the following list (assuming default startup).
Searching
 
Incremental Search
 
Another way to search, which does not restrict the content of the class list - is to use incremental search.
 
Simply ensure that you have focus on the class list (as in all the screen shots above) and then start typing.  The letters you type will appear in orange at the top right hand corner.
 
Stop typing and the list will highlight all occurrences of what you typed, and the focus/highlight will jump to the first occurrence.  
 
Press Apple-G to advance to the next occurrence, or Shift-Apple-G to go to the previous occurrence.
 
This is useful if you are browsing the list, rather than homing in on something specific.  With incremental search you can browse very quickly using only the keyboard.  
 
You can enter a new search-type simply by waiting a small amount of time and starting to type again.
 
Copy / Paste
The currently selected objects in the class-list can be copied to the clipboard.  The following can be copied:
  1. 1.Classes / Protocols - the contents of the pseudo-header view are copied to the clipboard
  2. 2.Methods - the method, without a line-break, is copied to the clipboard
 
Keyboard Navigation
As usual in a Cocoa application, the keyboard can be used to navigate between different views and controls.  
 
The only additional tip here, is that pressing the left-arrow key while your current highlight is a method - will close the tree structure for that method.  The default behaviour of a Cocoa app would be to do nothing.
 
What is missing?

Honestly said: nothing - because there isn’t a specification!  But more sensibly, I can think of the following things that could potentially be in the application.
 
  1. 1.Saving the obtained meta-data - doing this would theoretically allow one to ‘diff’ meta-data collections, in order to see the changes made to the Cocoa classes over time.  The collections could be placed on a shared resource for all to use - i.e. the Cocoa classes as used in each major revision of Mac OS X.

  2. 2.Load up ‘Applications’ or ‘Libraries’ into a document, showing all the contained classes and protocols etc.  This in practice would be the ‘class-dump’ utility, but via GUI.

  3. 3.A way of showing the classes that use a particular protocol.

  4. 4.Category discovery, showing which categories exist for classes - I’ve heard this must be done by reading the Mach-O object files.