我在我的应用程序中使用了大量非常小的 Web 服务,并且我已经走了几条无法按预期扩展或工作的道路。
我正在考虑的设计方法:viewController 的任务是从一般 webServicesClass 中请求一组数据,这个任务在一个新的 NSThread 中启动 -> 这将实例化一个仅检索 xml 并将其返回给webServicesClass -> webServicesClass 现在实例化一个对象,该对象只能解析来自该特定 Web 服务的一些 XML。然后解析器返回一个不错的 Entity 对象给 webServiceClass。WebserviceClass 现在需要通知 viewController 这个数据。
viewController 实现了一个 webServiceClassDelegate 和一些委托方法,以查看 Web 服务请求是否按计划进行。例如 -(void)aWebserviceFailed 和 -(void)aWebserviceSuccess。
0.5由于运行的WebserviceClass是不同的NSThread,在父对象的主NSThread上调用委托方法会不会有问题?
1.0我认为这个设计是合理的,因为它完全封装了不同类中Entity的检索、解析和返回。但是,我将不得不为每个不同的 Web 服务编写委托方法并在每个步骤中实现委托协议。即从底层开始,WebserviceClass 必须为检索 XML 的对象(start、fail、success)、解析 XML 的对象(start、fail、success)和 WebserviceClass 都实现委托方法。将这些响应中的每一个委托给必须再次实现来自 WebserviceClass 的委托方法(开始、失败、成功)的 viewController。有没有更简单的方法来做到这一点?
我有一些设计模式经验,但不是来自像 Objective C 那样一致地使用委托的语言。在 AS3 或 Java 中,我会有一些事件可以通过对象冒泡并通知正在监听更改的人。在我读过的所有目标示例代码中,我只看到 NSNotifications(相当于 AS3 或 Java 的“事件”)使用了 0.1% 的时间。
我所描述的设计将给我一些可以完美地扩展到许多 Web 服务的东西,并让我完全控制潜在错误/异常发生的位置,但似乎需要大量代码才能获得这种松散耦合。
1.1或者我应该完全接受委托方法并开始工作:)
感谢您提供的任何指示或帮助。我不要求源代码或类似的东西,更多的是“在你刚刚描述的日常情况下,这被认为是 Objective C 中的最佳实践”:)