我正在使用 ASIHTTPRequest 与服务器异步通信。它工作得很好,但是我在不同的 Controller 中执行请求,现在所有这些 Controller 中都有重复的方法。在单个类中抽象该代码(请求)的最佳方法是什么,这样我就可以轻松地重用代码,从而使 Controller 更加简单。我可以将其放在单例中(或应用程序委托(delegate)中),但我认为这不是一个好方法。或者也许可以使用委托(delegate)回调为其制定自己的协议(protocol)。
任何有关良好设计方法的建议都会有所帮助。谢谢。
最佳答案
我正在大量使用 Ben Copsey 的 ASIHTTPRequest
子类来构建 Web 服务客户端,我希望在接下来的几周内完成。这是一个很棒的项目,他的工作为我节省了大量的时间和精力。
我在应用程序委托(delegate)中设置了一个 ASINetworkQueue
。向队列发送 -go
消息,以便它准备好接收请求。我将子类请求添加到该队列中。每个请求都会被处理并发出通知,我的 View Controller 会相应地处理响应数据。
我所做的是子类ASIHTTPRequest
并且:
- 设置
-init
方法(或-initWithParams:
方法,具体取决于请求) - 重写
-requestFailed:
和-requestCompleted:
以处理从 Web 服务返回的 HTTP 错误消息 - 我的 View Controller 注册以观察来自
-requestCompleted:
方法中的错误处理的NSNotification
通知
当 View Controller 在导航堆栈中推送和弹出时,我添加和删除不同的注册。某些 View Controller 只需要监听某些子类请求类型。
监听 NSNotification
允许我发出 UIAlertView
对话框,让用户知道出了问题,或者处理请求响应数据(将结果馈送到核心数据存储中) ,例如)当请求产生成功的 HTTP 错误时。
无论请求成功还是失败,我都会记得在完成后-release
请求。
关于iphone - ASIHTTPRequest代码设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748587/