Q: I am using the function NXGetNamedObject(const char * aname, id owner) to find the id of my NXBrowser object. My main program containing the loadNibSection:owner: was created by InterfaceBuilder and had NXApp in the owner: argument. However, passing NXApp as the owner always returns a nil id. What am I doing wrong?
A: By default, InterfaceBuilder assigns the Application object (NXApp) as the owner of a Window, and a View's Window as the owner of that View. Since NXBrowser is a subclass of View, you must use the NXBrowser's Window id instead of NXApp as owner in the function NXGetNamedObject().
Below is a code snippet for illustration:
id myWindow, myBrowser;
/* Get the id for the browser's window */
myWindow = NXGetNamedObject("MyWindow", NXApp);
/* Get the id of the browser itself */
myBrowser = NXGetNamedObject("MyBrowser", myWindow);
Note that named objects are a big performance loser because of the memory it takes to keep track of all the names of the objects. For this reason, we would recommend that you use loadNibSection:owner:withNames:NO when loading in nib files. Try to use outlets instead of named objects whenever possible.
QA816
Valid for 2.0, 3.0