[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Comparing Selectors
From: |
Sašo Kiselkov |
Subject: |
Re: Comparing Selectors |
Date: |
Fri, 05 Aug 2005 13:35:59 +0200 |
User-agent: |
Internet Messaging Program (IMP) 3.2.5 |
Quoting David Ayers <d.ayers@inode.at>:
> Sašo Kiselkov schrieb:
> > I have an issue with comparing selectors. Trouble is, the GNU Objective-C
> > runtime tells me that SEL's are pointers to struct objc_selector and that
> they
> > themselves may not be unique, and the correct way to compare them is by
> doing:
> >
> > sel1->sel_id == sel2->sel_id
> >
> > However, Apple forums and according to what I read about the Apple
> Objective-C
> > runtime, doing just
> >
> > sel1 == sel2
> >
> > is perfectly fine and that the uniqueness of both selectors is ensured.
> >
> > So please, can anybody tell me what is the correct, civilized and portable
> way
> > of doing it?
>
> Indeed, for the Apple/NeXT Objective-C runtime selector equality can
> determined by pointer comparison yet this does not work for the GNU
> Objective-C runtime due to the notion of "typed selectors". The
> canonical way to portably compare selectors is to use
>
> BOOL sel_eq (SEL s1, SEL s2)
>
> which is actually a GNU Objective-C runtime function but GNUstep defines:
>
> #define sel_eq(s1, s2) (s1 == s2)
>
> for the Apple/NeXT Objective-C runtime in GNUstepBase/objc-gnu2next.h
> which is included by GNUstepBase/GSObjCRuntime.h. This last header
> contains various functions to help abstract the differences between the
> two runtimes, and is probably the header you want to include. (Note
> that not all mappings in objc-gnu2next.h really work smoothly due to
> slightly differing semantics.)
>
> Cheers,
> David Ayers
>
I see. Thanks, problem solved then. :-)
Regards
Saso