[MacRuby-devel] KVO dot notation bug?

Jim Getzen jim at getzen.name
Fri Nov 14 08:23:33 PST 2008


I may have come across a KVO-related bug in MacRuby. In my project I  
have an Objective-C subclass of NSObject that uses @property and  
@synthesize to set up instance variable accessors.

In the init method I set a key-value observer for one of those  
variables ('text') using:
[self addObserver:self forKeyPath:@"text"  
options:NSKeyValueObservingOptionNew context:NULL];

The class also has the required observing method:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object  
change:(NSDictionary *)change context:(void *)context

When I set a new value for 'text' from Objective-C code using  
something like instance.text = @"Hello", the observing method is  
called as expected and everything is fine.

When I set a new value from MacRuby code using  
instance.setText("Hello"), it also works fine.

However, when I set a new value from MacRuby code using dot notation,  
e.g. instance.text = "Hello", it fails and the debugger is activated.  
The error log is lengthy, but it begins with these statements:

warning: Could not find object file "/private/tmp/trunk/array.o" - no  
debug information available for "array.c".

warning: Could not find object file "/private/tmp/trunk/bignum.o" - no  
debug information available for "bignum.c".

Assigning values to the other instance variables of the Obj-C class  
works fine from MacRuby using dot notation, but those other variables  
do not have observers assigned. In fact, if I remove the  
'observeValue...' method from the Obj-C class, the dot notation  
assignment works fine again for that 'text' variable.

Sure seems like a bug to me. Any ideas?

Jim


More information about the MacRuby-devel mailing list