Hi Fred, > You should have a look at GSProtocolGetMethodDescriptionRecursive in > Additions/GSObjCRuntime.m. I think this should be able to provide the > required functionality.
Thanks a lot. I do NSMethodSignature *objcSignature = nil; #ifdef __APPLE__ { struct objc_method_description *methodDescription = NULL; methodDescription = [_protocol descriptionForInstanceMethod:aSelector]; if (methodDescription == NULL) methodDescription = [_protocol descriptionForClassMethod:aSelector]; if (methodDescription != NULL) types = methodDescription->types; } #else { struct objc_method_description desc; desc = GSProtocolGetMethodDescriptionRecursive(_protocol, aSelector, YES, YES); if (desc.name == NULL && desc.types == NULL) { desc = GSProtocolGetMethodDescriptionRecursive(_protocol, aSelector, YES, NO); } types = desc.types; } #endif if (types) objcSignature = [NSMethodSignature signatureWithObjCTypes:types]; now. The Apple part works on Macs and with my ancient GNUstep tree. I do not know yet, whether the non-Apple part works on Ubuntu (current GNUstep) but will try once the SIGSEGV problem is figured out. :-) It's a little surprising to me why > Protocol * _protocol = @protocol(TestProtocol); > SEL aSelector = @selector(doIt); > struct objc_method_description _methodDescription = > protocol_getMethodDescription(_protocol, aSelector, NO, YES); > if (_methodDescription.name == NULL) _methodDescription = > protocol_getMethodDescription(_protocol, aSelector, NO, NO); > NSLog(@"_methodDescription.name %@", > NSStringFromSelector(_methodDescription.name)); does not work on Apple as I understood this was the recommended way to do it now!? But it simply does not work, therefore reverting back back to the deprecated approach (deprecated descriptionForInstanceMethod: method of Protocol). Thanks so much, Andreas
_______________________________________________ Discuss-gnustep mailing list Discuss-gnustep@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnustep