AppKiDo and AppKiDo-for-iPhone

What is AppKiDo?

AppKiDo is an API documentation browser for Cocoa programmers. It helps you quickly find the doc you want, whether it's for a class, protocol, function, type, or constant. AppKiDo parses the headers and HTML doc files that were installed with your Developer Tools. It presents the results in a form that is easy to navigate.

AppKiDo-for-iPhone is just like AppKiDo (and is built from the same code base), but for iOS developers.

Requirements:

  • Mac OS X 10.6 (Snow Leopard) or higher [10.5 is no longer supported]
  • Xcode 3.2.6 or higher, with one or more docsets downloaded

Features:

Click to see larger image

Class hierarchy

AppKiDo presents the class hierarchy in a view much like the Finder's "Columns" view. You can see sibling classes at a glance and go up and down the hierarchy with a single click. This is convenient because the method you're looking for is sometimes in a superclass.

If you are new to Cocoa, browse the class hierarchy to get acquainted with what's there and how it's organized. If you are more experienced, you can explore branches of the hierarchy you never paid attention to before.

Consolidated list of methods

AppKiDo can display a consolidated list of all methods a class implements, including inherited methods, methods that satisfy a protocol, and methods added by a framework other than the class's main framework (for example, the drawing methods that AppKit adds to NSString). This can help you understand the complete behavior of a class, and it's another quick way to find methods that are in a superclass.

Quicklists

AppKiDo provides handy "quicklists" of logically related groups of classes. This puts many frequently used classes a click or two away. It can also help you understand some concepts. For example, if you find delegates confusing, it may help to browse "Classes with delegates" to see all the ways a delegate is used.

Since iOS doesn't have window or cell classes, AppKiDo-for-iPhone offers quicklists for "View controller classes" and "Layer classes" instead.

Search

If you're not sure what you're looking for, AppKiDo can search for names of API constructs. For example, if you're wondering how to manage cursors, search for "cursor". Apple has conveniently put the word "cursor" in the names of most things related to cursors.

Pop Quiz

To encourage exploration, AppKiDo has a "Pop Quiz" feature that presents a random API symbol. You can try to remember or guess the meaning of the symbol before seeing the documentation for it.

Search from anywhere ("method-aware")

AppKiDo provides a system service called "Look Up in AppKiDo". (In AppKiDo-for-iPhone it's "Look Up in AppKiDo-for-iPhone".) This allows you to search the docs from any application where you have selected some text.

AppKiDo's search service is "method-aware". If you select a message-send or method declaration, and then invoke the service, AppKiDo will detect the method name and search for that instead of the literal text you selected. This is useful for multi-argument methods where the pieces of the method name are intermingled with other text.

To invoke this service as quickly as possible, be sure to assign a hotkey to it in System Preferences > Keyboard > Keyboard Shortcuts > Services.

Feel free to use my method-parsing class in your own apps.

1. Select these lines:


2. Invoke the service:


3. AppKiDo searches for the method:

Header files

AppKiDo can open the header file for any Cocoa class or protocol. Sometimes there is useful information in the headers that is not available in the documentation.

Free

AppKiDo is free. It's a hobby app that scratches a personal itch. I hope it saves time and effort for my fellow developers. That said, donations are certainly appreciated; you can use the PayPal link to the right. If you're not on PayPal, you can just send me a "hello" email and that will make me just as happy.

Many thanks to those who have contributed comments, bug reports, and code. If you have negative feedback, that is fine too.

Donate using PayPal
(Enter amount on the next page)