gpt4 book ai didi

objective-c - 我需要有关 iOS Web 服务客户端设计模式的帮助

转载 作者:行者123 更新时间:2023-12-01 16:54:41 25 4
gpt4 key购买 nike

我想在 iOS 中实现一个 Web 服务客户端,它使用 SOAP 和 XML 进行请求/响应。
我的 View 启动了初始业务逻辑(用户按下按钮或其他东西并启动一些称为 method_A 的业务方法)。

所以我有一个带有 method_A 的类,这个方法检查用户是否登录等,然后通过 SOAPConnector 类异步启动请求。所以 UI 不会被阻塞(异步)。
SOAPConnector 类接受 XML 并处理请求。因此,我将 NSURLRequest 和 NSURLConnection 与 sendSynchronousRequest 一起使用。

响应被发送回接受响应的响应类。然后这个类想要解析响应 XML。因此,我使用了一个名为 XMLManager 的额外类,它使用 NSXMLParser 来解析 xml。但是这里我们需要一个委托(delegate)来获取解析的 xml。再次在解析之后,我必须实现一个额外的方法来将解析的 xml 返回给发起请求的第一个类。

我真的想知道这是否是正确的方法。第一个问题是不阻塞 UI 的异步请求(第一个回调)。第二个问题是我被迫使用委托(delegate)的解析(第二个回调)。这导致了很多类和方法,我怀疑这是正确的方法。这些类的唯一目的是管理委托(delegate)和异步问题。所以我正在寻求任何建议并帮助解决这个问题。你知道一些很好的设计模式来解决这个问题吗?

最佳答案

除了描述您选择的设计模式的方式存在一些不一致之外:

and then starts the request asynchronous



对比

I use therefore NSURLRequest and NSURLConnection with sendSynchronousRequest.



也就是说,你的方法似乎是合理的。解决您发现的问题:

I use therefore NSURLRequest and NSURLConnection with sendSynchronousRequest.



这不就是使用异步 API 的目的吗?如果您的 NSURLConnection确实是异步操作的,应该涵盖这个问题。

The second problem is the parsing where I am forced to use the delegate



这种方法确实会产生更多的类、委托(delegate)等,但它在测试方面符合最佳实践。如果您正在执行单元测试或其他测试策略(您不是吗?),那么除非您在功能上分解此过程,否则单独测试会更加困难。

如果您可以访问本书 Test-Drive iOS Development从可测试性的角度来看,有很大一部分是关于使用 Web 服务的最佳实践的。

关于objective-c - 我需要有关 iOS Web 服务客户端设计模式的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com