[MacRuby-devel] Key-value observing

Jeremy Voorhis jvoorhis at gmail.com
Fri May 15 09:42:25 PDT 2009


Binding should work through Interface Builder, but I was only speaking
of the example in the original post. Traditional-style attr_writers
invoked by Ruby code bypass key-value observers, but it seems
intuitive to me to allow them to notify observers given how pervasive
key-value coding is in Cocoa, and that the infrastructure is
implemented in the base class for every object in the MacRuby runtime.

Best,

Jeremy Voorhis

On Fri, May 15, 2009 at 12:42 AM, Thilo <thilo at upstream-berlin.com> wrote:
> Isn't it already working? At least for primitiv types?
>
> Eg. when I bind a label to a Int property which i change with a slider bind
> to the same property i don't need additional code for KVO.
>
> Cheers
> Thilo
>
>
> On 13.05.2009 22:31 Uhr, Jeremy Voorhis wrote:
>>
>> I've created a ticket at https://www.macruby.org/trac/ticket/252. I
>> might be wrong as I am still grokking the Objective-C runtime, but it
>> seems to me that this should be easy to implement if attr_accessor and
>> attr_writer generate the setKey: method first and then implement #key=
>> in terms of setKey:. Is there some requirement that key-value setter
>> methods return void, or is that just by convention?
>>
>> Best,
>>
>> Jeremy
>>
>> On Wed, May 13, 2009 at 12:00 PM, Laurent Sansonetti
>> <lsansonetti at apple.com>  wrote:
>>>
>>> Hi Jeremy,
>>>
>>> That's a pretty good idea! Could you file a bug on the tracker so that we
>>> do
>>> not forget about it?
>>>
>>> Thanks,
>>> Laurent
>>>
>>> On May 12, 2009, at 10:18 AM, Jeremy Voorhis wrote:
>>>
>>>> Hello,
>>>>
>>>> I've been learning Cocoa, Objective-C and macruby in tandem and I was
>>>> just wondering, are there any plans to integrate the key-value
>>>> observing protocol with the attr_accessor family of methods? With a
>>>> little experimentation, I found KVO is definitely possible with
>>>> macruby, but the syntax is less than ideal (transcript made with the
>>>> 0.4 release).
>>>>
>>>> ~ % macirb
>>>>>>
>>>>>> class Notifier
>>>>>>  attr_accessor :value
>>>>>> end
>>>>
>>>> =>  nil
>>>>>>
>>>>>> class Observer
>>>>>>  def observeValueForKeyPath(path, ofObject:object, change:change,
>>>>>> context:context) puts change end
>>>>>> end
>>>>
>>>> =>  nil
>>>>>>
>>>>>> n = Notifier.new
>>>>
>>>> =>  #<Notifier:0x8005e91a0>
>>>>>>
>>>>>> n.addObserver(Observer.new, forKeyPath:'value', options:0,
>>>>>> context:nil)
>>>>
>>>> =>  nil
>>>>>>
>>>>>> n.value = 42
>>>>
>>>> =>  42
>>>>>>
>>>>>> n.setValue 42
>>>>
>>>> {"kind"=>1}
>>>> =>  nil
>>>>
>>>> Best,
>>>>
>>>> Jeremy Voorhis
>>>> _______________________________________________
>>>> MacRuby-devel mailing list
>>>> MacRuby-devel at lists.macosforge.org
>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> MacRuby-devel at lists.macosforge.org
>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>


More information about the MacRuby-devel mailing list