Re: Stupid objective-c question
Re: Stupid objective-c question
- Subject: Re: Stupid objective-c question
- From: Uli Kusterer <email@hidden>
- Date: Sat, 24 Sep 2016 04:49:10 +0200
> On 23 Sep 2016, at 01:07, Quincey Morris <email@hidden> wrote:
>
> On Sep 22, 2016, at 15:45 , Gabriel Zachmann <email@hidden> wrote:
>>
>> Sure, but an observation method is what would be called a "callback" in plain C.
>> In C, I can have many different callbacks.
>> I don't see why that should not be possible in Obj-C - I just would need a mechanism to add tell the system the names / function pointers to be registered as observers.
>
> It is of course possible in Obj-C. There are APIs that have a “didEnd” selector, such as (deprecated) ‘[NSApplication beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:]’. That’s similar to the KVO notification method concept, except that you get to specify a selector and a target object. Note, however, that such APIs tend to have a context parameter, too**.
>
> But that’s because the KVO notification mechanism is a more ancient design concept, where it likely seemed simple, adequate and flexible. I assume it comes from NeXTStep days (late 80s or early 90s), not OS X 10.0 days (early 2000s), although I don’t know for sure.
Are you sure? I only learned Cocoa when it came to OS X, but my impression was that, while KVC came from NeXT, KVO arrived with bindings … that would have been 10.3 or 10.4-ish?
> ** In the “didEnd” selector mechanism, the context parameter is likely used for actual context information, rather than for identifying the source of the invocation. It can be used that way with KVO notifications, too, but the fact that they’re funneled through a single method in the observer object means that the context is implicitly known anyway, and the context parameter has been appropriated as a marker for the source of the observation.
Yeah, I wouldn't conflate the context on beginSheet: and the majority of Cocoa calls with the one on KVO. And I would actually argue that you *should not* use the KVO context as actual storage, as as soon as it contains useful information, you can't tell it from someone else's context anymore (such as your superclass's). At the least using it for data would be bad style.
Cheers,
-- Uli Kusterer
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden