我是as3开发人员,每次发布活动时我都习惯使用处理程序,我想知道在Objective C中哪种方法/做法最好。
假设我想从我的后端拨打不同的服务。
在as3中,这样的东西会持续到完成事件:
service.addEventListener(Event.COMPLETE,handler_serviceDidFinished) service2.addEventListener(Event.COMPLETE,handler_serviceDidFinished2)
但是如何在Objective C中做同样的事情呢?
问题是我已经创建了协议和委托,但是如何将每个响应与服务器分开?
例如:
-(void)callService:( NSString * )methodName withParameters:(NSMutableDictionary *) parameters
{
...
if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(serviceDidFinishSuccessfully:)]) {
[delegate serviceDidFinishSuccessfully:data];
}
}
我正在尝试在这里创建一个通用委托,那么如何为每个服务分隔每个响应呢?
我的第一个想法是,我可能应该在委托调用中返回服务方法的名称来识别每个服务。也许我应该为每个服务创建一个UID并以同样的方式传递...
有什么想法吗?
答案 0 :(得分:2)
您可能对Objective-C通知感兴趣。基本上,这些允许您使用“发布”不同消息的“通知中心”;然后,所有回调/委托类都可以“注册”某些通知,以便他们知道何时做事。这样,您的所有后端都必须发布通知,而不用担心某些代表是否会对选择器做出响应等。请参阅Cocoa Core Competencies: Notifications(以及NSNotificationCenter和NSNotification类参考资料)。
答案 1 :(得分:0)
查看NSURLConnection委托 - 常见的模式是将调用您的对象作为第一个参数传回,这样就可以区分您作为委托的几个对象。
通知是指示任务完成的有用信息,但对于需要影响对象处理流程的处理程序并不是很好。