FROM : Marcel Weiher
DATE : Sun Nov 10 21:13:05 2002
On Sunday, November 10, 2002, at 05:20 Uhr, Ken Tozier wrote:
> I was reading up on how to use IMP in the NSObject documentation in
> order to speed up some of my loops, but the examples don't look right.
>
> The documentation suggested declaring IMP's like this:
>
> typedef BOOL (*ASCIICompareIMP)(id, SEL, unsigned char);
>
> EqualIMP test;
>
> test = (EqualIMP)[target methodForSelector:@selector(isEqual:)];
>
> And using them like this:
>
> while ( !test(target, @selector(isEqual:), someObject) )
> {
> ...
> }
>
> But given that the initialization line:
>
> test = (EqualIMP)[target methodForSelector:@selector(isEqual:)];
>
> already encapsulates "id" and "SEL" from the prototype, I would have
> expected it to be used like:
>
> while ( !test(someObject) )
> {
> ...
> }
>
> What's the scoop?
The scoop is that methodForSelector simply returns a C function
pointer. It is not a "currying" operation.
Marcel
--
Marcel Weiher Metaobject Software Technologies
<email_removed> www.metaobject.com
Metaprogramming for the Graphic Arts. HOM, IDEAs, MetaAd etc.
_______________________________________________
cocoa-dev mailing list | <email_removed>
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
DATE : Sun Nov 10 21:13:05 2002
On Sunday, November 10, 2002, at 05:20 Uhr, Ken Tozier wrote:
> I was reading up on how to use IMP in the NSObject documentation in
> order to speed up some of my loops, but the examples don't look right.
>
> The documentation suggested declaring IMP's like this:
>
> typedef BOOL (*ASCIICompareIMP)(id, SEL, unsigned char);
>
> EqualIMP test;
>
> test = (EqualIMP)[target methodForSelector:@selector(isEqual:)];
>
> And using them like this:
>
> while ( !test(target, @selector(isEqual:), someObject) )
> {
> ...
> }
>
> But given that the initialization line:
>
> test = (EqualIMP)[target methodForSelector:@selector(isEqual:)];
>
> already encapsulates "id" and "SEL" from the prototype, I would have
> expected it to be used like:
>
> while ( !test(someObject) )
> {
> ...
> }
>
> What's the scoop?
The scoop is that methodForSelector simply returns a C function
pointer. It is not a "currying" operation.
Marcel
--
Marcel Weiher Metaobject Software Technologies
<email_removed> www.metaobject.com
Metaprogramming for the Graphic Arts. HOM, IDEAs, MetaAd etc.
_______________________________________________
cocoa-dev mailing list | <email_removed>
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
| Related mails | Author | Date |
|---|---|---|
| Ken Tozier | Nov 10, 05:20 | |
| John Hörnkvist | Nov 10, 18:22 | |
| Ondra Cada | Nov 10, 20:09 | |
| Marcel Weiher | Nov 10, 21:13 |






Cocoa mail archive

