Q:  I have created a custom palette.  I want to do some additional initialization in my palette, once the user has dragged it into one of the application's windows, or just before they run the InterfaceBuilder Test Interface mode. Which method does InterfaceBuilder call to communicate with my palette?
  
A:  When you drag an object off the Palette, a read: and an awake: message are sent after the first write: message.  Subsequent dragging of the same object generates only a read: and an awake: message. However, each time you go into the InterfaceBuilder Test Interface mode, new instances of each palette object are created so each of those real instances are sent a write: message, then a read: and an awake: message.

This is because InterfaceBuilder treats objects differently when they are in "build" mode vs. "test" mode.
Note also that during the archiving process, write: methods may be performed twice, so they shouldn't do anything other than write instance variables to a typed stream.

Valid for 2.0, 3.0, 3.1

QA716