Digging a bit more I think a solution to my own questions is:

On 13 May 2010, at 14:33, Dave Baldwin wrote:

I am trying to translate code that looks like this:

static NSString *SKTWindowControllerCanvasSizeObservationContext = @"com.apple.SKTWindowController.canvasSize";

and later

[[self document] addObserver:self forKeyPath:SKTDocumentCanvasSizeKey options:NSKeyValueObservingOptionNew context:SKTWindowControllerCanvasSizeObservationContext];

to Ruby:

SKTWindowControllerCanvasSizeObservationContext = "com.apple.SKTWindowController.canvasSize"

SKTWindowControllerCanvasSizeObservationContext = Pointer.new(:char)

as all we are after is a unique value.  I still don't understand why the original version wasn't acceptable as the documentation says the context argument can be a C pointer or an object reference.  Anyhow, this has got me past this point but I have still to prove the final result when it is used by the observer.

document.addObserver(self, forKeyPath: SKTDocumentCanvasSizeKey, 
options: NSKeyValueObservingOptionNew,
context:SKTWindowControllerCanvasSizeObservationContext)

but when it runs I get this error:

 expected instance of Pointer, got `"com.apple.SKTWindowController.canvasSize"' (String) (TypeError)

How do I get the a pointer to the context string?  All the examples I have found for the Pointer class seem to expect an objective C routing to fill it in.

Thanks,

Dave.



Dave.