callbacks via objective-c selectors

Posted by codemonkey on Stack Overflow See other posts from Stack Overflow or by codemonkey
Published on 2010-06-08T22:26:26Z Indexed on 2010/06/08 22:32 UTC
Read the original article Hit count: 233

I have a "BSjax" class that I wrote that lets me make async calls to our server to get json result sets, etc using the ASIHTTPRequest class. I set it up so that the BSjax class parses my server's json response, then passes control back to the calling view controller via this call:

[[self delegate] performSelectorOnMainThread:@selector(bsRequestFinished:) withObject:self waitUntilDone:YES];

... where "bsRequestFinished" is the callback method in the calling view controller. This all worked fine and well until I realized that some pages are going to need to make different types of requests... i.e. I'll want to do different types of things in that callback function depending on which type of request was made.

To me it seems like being able to pass different callback function names to my BSjax class would be the cleanest fix... but I'm having trouble (and am not even sure if it's possible) to pass in a variable that holds the callback function name and then replace the call above with something like this:

[[self delegate] performSelectorOnMainThread:@selector(self.variableCallbackFunctionName) withObject:self waitUntilDone:YES];

... where "self.variableCallbackFunctionName" is set by the calling view controller when it calls BSjax to make a new request.

Is this even possible? If so, advisable? If not, alternatives?

EDIT: Note that whatever fix I arrive at will need to take into account the reality that this class is making async requests... so I need to make sure that the callback function processing is correctly tied to the specific requests... as I can't rely on FIFO processing sequence.

© Stack Overflow or respective owner

Related posts about iphone

Related posts about objective-c