Last updated at 5:07 am UTC on 22 May 2018
From an email; somebody might rewrite the content but at the moment it is useful as it is
From: Scott Wallace
Subject: Re: An Ideal System Browser
Date: Thu, 29 Nov 2001
Two new tools: They are young and little-known, but if you add them to your arsenal of tools you may eventually come to wonder how you ever got along without them.
The two are: an instance-based tool called the Instance Browser, and a class-based tool called the Lexicon.
You can obtain these tools using "browse protocol" (cmd p) from Inspectors, Browsers, and elsewhere.
(a) A "navigation" metaphor, with a "history" mechanism accompanied by forward and back buttons.
(b) Natural in-tool chains of enquiry using "view" and "senders" buttons.
(c) A "find" facility that allows you to find methods by selector fragment (this is like the MethodNames tool, but confined to methods understood by the actual object you are browsing.)
(d) The ability to truncate your searches at any level of the inheritance chain.
(e) Merging of method categories up the inheritance chain.
A typical scenario of use is: you're looking at a method; to understand it better, you want to look at a different method – typically a method that calls this method, or a method called by this method. So you look at that method (use the "View..." or "Senders" button) – and maybe from there you may go on a further excursion suggested there – and you can always return to where your enquiry started by hitting the "back" button.
(Many other queries and features are also available in this tool – check out the various buttons, as well as the various items hidden behind the menu icon in the button bar.)
Understand that any one of these does not browse the entire system, but rather it browses the complete protocol of any one object or class. Thus, it is great for any chain of enquiry involving messages sent to "self", but if you have multiple objects that send messages to one another, you're best served by having multiple Instance browsers – one for each object.
InstanceBrowser new openOnObject: String new showingSelector: nil