Re: performSelectorOnMainThread
Re: performSelectorOnMainThread
- Subject: Re: performSelectorOnMainThread
- From: Ashley Clark <email@hidden>
- Date: Sat, 10 Jan 2009 13:11:05 -0600
On Jan 10, 2009, at 1:00 PM, John Love wrote:
-performSelectorOnMainThread:withObject:waitUntilDone:, according to
Apple docs, is passed a SEL method that "should not have a
significant return value".
I wish it to return a INT and I figure that that qualifies as in-
significant. Given that assumption, my real question is how to
implement it. I call:
[self performSelectorOnMainThread:@selector:mySimpleSelector
withObject:nil waitUntilDone:YES];
(int) mySimpleSelector {
if (whatever) return 0;
else return 1;
}
via my call to -performSelectorOnMainThread, just how do I access -
mySimpleSelector's returned INT? The simplest answer is to not have
a return value at all, but rather store the INTs in a global; but I
figure there is no time like the present to learn to solve this
problem the right way.
You can't use performSelectorOnMainThread and get at the return value.
You'll have to create and use an NSInvocation object to get at the
return value.
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[obj
methodSignatureForSelector:mySelector]];
[inv setTarget:obj];
[inv setSelector:mySelector];
// if you have arguments, set them up here
[inv setArgument:&addressOfSomeArgument atIndex:2]; // starting at 2,
since 0 is the target and 1 is the selector
int myReturnValue;
[inv setReturnValue:&myReturnValue];
[inv performSelectorOnMainThread:@selector(invoke) withObject:nil
waitUntilDone:YES];
NSLog(@"return value: %@", myReturnValue);
Ashley
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden