You are here: Recent News » Projects » ActionStep » ActionStep Features » Binding



Binding consists of a few different technologies and techniques. Accessing properties based on string “keys” is called Key-Value Coding (KVC).

Observing property changes using string “keys” is called Key-Value Observing (KVO).

More information can be found on these topics at the following URLs:

Key-Value Coding Programming Guide

Key-Value Observing Programming Guide



A string which is of the same name as an object’s property. Eg. age, name, value.

Key Path

A dot separated list of multiple keys. For example, if we had a Person object, structured as follows:

{name:String, mom:Person, dad:Person}

A key path to a person’s mom’s name would be.

Making your Objects KVC Compatible

For binding to work with your code, you must use one of the following patterns. <key> is the name of the property. Type is the type of your property.

  • Getter:
function <key>():Type;

or (note uppercased key)

function is<Key>():Type;

or (note uppercased key)

function get<Key>():Type;
  • Setter (note the uppercased key)
function set<Key>(n:Type):Void;

If no accessor functions are found for the given key, we attempt to access an internal member named <key>.


  • Simple tutorial that shows how to use NSArrayController with an application. However, the author is working mainly with Xcode, and very little Objective-C code is used to implement the bindings.

  • A structured and step-by-step tutorial, with plenty of diagrams and screenshots. Again, mainly works with Xcode.

  • List of Cocoa binding examples. Those of exceptional interest include the Manual Bindings, Graphic Bindings and Combatants, which establishes bindings programmatically.

  • Pure Objective-C tutorial on binding, however, it is in German.

    Of particular interest would be the section Binding anbieten (no idea what that means) which explicitly uses + exposeBindings and - valueClassForBinding, because they’re are usually passed over due to the use of Interface Builder.

projects/actionstep/documentation/binding.txt · Last modified: 2007/02/19 11:11 by niko