# 9 Using ids

The file owner syntax explained in the previous sections is just a special case of a more general way of referring to objects by id. An id is just a name internally used to refer to objects; it's never displayed to the user, but it can be used internally in a gsmarkup file to refer to an object: when a gsmarkup file is loaded, objects in the file (or outside the file) can have an id set, and can be referred to by using the special syntax #id. The file owner is a special case of this; it is an object (external to the file) which has its id automatically set to NSOwner, so that you can refer to it using #NSOwner.

To set the id of an object inside that file, you just add an id attribute. For example, <window id="Foo" /> creates a window with an id of Foo.

To refer to the window, you can use the syntax #Foo; #Foo means “the object whose id is Foo”. For example, <button target="#Foo" /> creates a button, and sets its target to be the object whose id is Foo, that is, the window.

As a more complete example, the following gsmarkup file creates a window, and inside the window a button; clicking on the button will call the performClose: method of the window (which closes the window):

    <gsmarkup>

      <objects>

        <window id="A">
          <button title="Close window" action="performClose:" target="#A" />
        </window>

      </objects>

    </gsmarkup>

Here the window has an id of A, and the button target is set to be the object with id A, which is the window. You can try out this example by replacing the Window.gsmarkup file in our example with this one.