我有一个“BSjax”类,我写了这个类让我使用ASIHTTPRequest类获取json结果集等服务器的异步调用。我把它使得BSjax类解析我的服务器的JSON响应,然后将控制传递回通过该呼叫的主叫视图控制器:通过objective-c选择器回调
[[self delegate] performSelectorOnMainThread:@selector(bsRequestFinished:) withObject:self waitUntilDone:YES];
...其中“bsRequestFinished”是在调用视图中的回调方法控制器。这一切都工作得很好,直到我意识到有些页面需要进行不同类型的请求...即,我希望根据请求的类型,在该回调函数中执行不同类型的事情。
对我来说,似乎能够将不同的回调函数名称传递给我的BSjax类将是最干净的修复程序......但我遇到了麻烦(我甚至不确定是否有可能)传递一个变量保存回调函数的名称,然后像这样的东西代替上面的电话:
[[self delegate] performSelectorOnMainThread:@selector(self.variableCallbackFunctionName) withObject:self waitUntilDone:YES];
...其中“self.variableCallbackFunctionName”由调用视图控制器设置时,它调用BSjax作出新的要求。
这甚至可能吗?如果是这样,建议?如果没有,替代方案?
编辑:请注意,无论我到达的修复将需要考虑到这个类是异步请求的现实......所以我需要确保回调函数处理正确绑定到特定的请求。因为我不能依靠FIFO处理顺序。
编辑2:看起来像传递SEL类型变量是要走的路?我现在与之战斗的是找出将它保存为BSjax类的保留属性的语法。
不错...ü的男人!甚至不知道那个NSSelectorFromString函数。完美地工作! – codemonkey 2010-06-08 22:59:31