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 _______________________________________________ Help-gnustep mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gnustep
