Re: null selector
Re: null selector
- Subject: Re: null selector
- From: Ryan Britton <email@hidden>
- Date: Wed, 14 Sep 2005 06:55:12 -0700
On Sep 14, 2005, at 4:48 AM, Keith Alperin wrote:
Greetings Cocoa-Devs!
I'm trying to implement a callback using an NSInvocation. However,
when i call invoke, i get: "<NSInvalidArgumentException> *** -
[MyTestApp methodSignatureForSelector:]: null selector".
Here is some test code that I am using:
- (void)awakeFromNib {
SEL *handlerSelector = @selector(someMethod: otherArg:);
The value @selector returns is not a pointer.
NSMethodSignature *signature = [self
methodSignatureForSelector: handlerSelector];
NSInvocation *handler = [NSInvocation
invocationWithMethodSignature: signature];
[handler setTarget:self];
[handler retain];
int *someArg = 1;
int *otherArg = 2;
[handler setArgument:&someArg atIndex:2];
[handler setArgument:&otherArg atIndex:3];
Here you're passing int pointers to a method that expects normal
ints. Removing the pointer aspect of int *someArg and int *otherArg
should fix that.
[handler invoke];
You need to do setSelector: on handler as well before you invoke it.
Both that setting and the method signature are absolute requirements
when using NSInvocation.
}
- (void)someMethod:(int)someArg otherArg:(int)otherArg {
NSLog("keyCode=%d",someArg);
NSLog("modifierFlags=%d",otherArg);
}
the "someMethod" method is declared in the header file. The error
occurs when calling [handler invoke].
Does anyone out there in cocoa land see the problem? This feels
like a rookie mistake, but as a cocoa rookie, I can't really tell
what that is.
Many thanks,
Keith R. Alperin
kalperin mac com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden