Re: Comparing Selectors

Sašo Kiselkov <[email protected]>
Newsgroups gmane.comp.lib.gnustep.user
Message-ID <[email protected]>
Quoting David Ayers <[email protected]>:

> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.