即时通讯使用了大量的非常小的Web服务在我的应用程序,我已经下来一对夫妇的希望没有规模或工作的道路。

在设计方式进出口思考: 为的viewController的任务是要求一组数据从一个普通webServicesClass,这个任务是在一个新的NSThread开始 - >这会实例化一个对象,它仅检索XML并将其返回到webServicesClass - >的webServicesClass现在实例一个对象,它仅仅可以解析一些XML从这个特定的Web服务来了。然后分析器返回一个不错的实体对象到webServiceClass。所述WebserviceClass现在需要通知的viewController有关此数据。

在的viewController实现webServiceClassDelegate和一些委托方法,以查看是否按计划的web服务请求去。例如 - (无效)aWebserviceFailed和 - (无效)aWebserviceSuccess。

<强> 0.5 由于WebserviceClass正在运行的不同NSThread,这将是在调用主NSThread委托方法在对父对象的问题?

<强> 1.0 我认为这种设计是声音,因为它完全incapsulates检索,解析和在不同类别的实体的返回。但是,我会写委派方法和实施代表团协议上的每一个步骤,每一个不同的Web服务。即从底部开始,WebserviceClass必须实现两个检索XML(可启动,失败,成功),则该解析XML对象的对象代理使用的方法(启动,失败,成功)和WebserviceClass必须能够委托这些反应到ViewController一遍必须实现从WebserviceClass代表团方法(启动,失败,成功)的。 有没有一种更简单的方法来做到这一点?

我有一些设计模式的经验,而不是从使用代表团,以便始终为目的C.在AS3或Java语言我会事件,可以冒泡通过的对象,并告知谁在听有关的变化。在所有的目标的示例代码我已读我只看到NSNotifications(这将是AS3的等效或Java“事件”)中使用的时间的0.1%。

我描述的设计将会给我的东西,完全扩展许多Web服务,给我在这里一个潜在的错误/异常发生的完全控制权,但它似乎是一个很大的代码来获得这种松散的耦合。

1.1 或我应该完全接受代表团的做法,开始工作:)

感谢任何指针或帮助给出。我不是要求源代码或喜欢,更多的是“这被认为是在每一天的情况Objective C的最佳实践,你刚才所描述的”:)

有帮助吗?

解决方案

我建议考虑看看ASIHttpRequest(可获得这里)和NSOperation + NSOperationQueue(文档这里)。我不认为你应该运行长寿命的线程来谈谈你的web服务的时候,除非你绝对需要的持续连接。

基本上ASIHttpRequest和的NSOperation两者封装所有联网和线程的东西。操作使iPhone上的多线程非常好的。基本上你创建一个操作(通过工厂或诸如此类的易用性),在队列中弹出它和做的结果的东西。

至于你,结果做什么(这适用于原来的场景太和 0.5和1.1 )什么通常的情况是你的操作/线程,然后将调用didSucceedAtGettingWhateverdidFailWithError:(NSError*)方法。代表团是几乎使得手机上的请求事实上的方式。如果有多个代表,那么你可以使用主题的观察者,就像你在Java中那样。

至于的 1.0 下,最终没有。我们通常做的是我们有一个OperationDelegate和OperationTypes。基于这OperationType成功或完成后,我们有不同的逻辑。这不是最大的,并有一吨的这样做的不同的方法,但你必须有,无论你做什么独立的事件分开的逻辑。无论这是否是在一个方法或多种方法是给你。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top