iphone - ASIHTTPRequest代码设计

标签 iphone cocoa-touch design-patterns oop asihttprequest

我正在使用 ASIHTTPRequest 与服务器异步通信。它工作得很好,但是我在不同的 Controller 中执行请求,现在所有这些 Controller 中都有重复的方法。在单个类中抽象该代码(请求)的最佳方法是什么,这样我就可以轻松地重用代码,从而使 Controller 更加简单。我可以将其放在单例中(或应用程序委托(delegate)中),但我认为这不是一个好方法。或者也许可以使用委托(delegate)回调为其制定自己的协议(protocol)。

任何有关良好设计方法的建议都会有所帮助。谢谢。

最佳答案

我正在大量使用 Ben Copsey 的 ASIHTTPRequest 子类来构建 Web 服务客户端,我希望在接下来的几周内完成。这是一个很棒的项目,他的工作为我节省了大量的时间和精力。

我在应用程序委托(delegate)中设置了一个 ASINetworkQueue。向队列发送 -go 消息,以便它准备好接收请求。我将子类请求添加到该队列中。每个请求都会被处理并发出通知,我的 View Controller 会相应地处理响应数据。

我所做的是子类ASIHTTPRequest并且:

  1. 设置 -init 方法(或 -initWithParams: 方法,具体取决于请求)
  2. 重写 -requestFailed:-requestCompleted: 以处理从 Web 服务返回的 HTTP 错误消息
  3. 我的 View Controller 注册以观察来自 -requestCompleted: 方法中的错误处理的 NSNotification 通知

当 View Controller 在导航堆栈中推送和弹出时,我添加和删除不同的注册。某些 View Controller 只需要监听某些子类请求类型。

监听 NSNotification 允许我发出 UIAlertView 对话框,让用户知道出了问题,或者处理请求响应数据(将结果馈送到核心数据存储中) ,例如)当请求产生成功的 HTTP 错误时。

无论请求成功还是失败,我都会记得在完成后-release请求。

关于iphone - ASIHTTPRequest代码设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748587/

相关文章:

ios - 包含 UIScrollView 的缩放后添加到 UIImageView 的注释不在正确的位置

oop - switch 语句不好?

iPhone - UIImagePickerControllerDelegate 继承

c# - 在 MonoTouch 中获取用户国家代码 (ISO 3166-1)

iphone - -[CALayer保留] : message sent to deallocated instance

c# - C# 中的 IObserver 和 IObservable 用于观察者与委托(delegate)、事件

ruby - 为什么我们定义 `#initialize` 而不是 `::new`

ios - 在 iOS 13 中获取 UIScrollView 的完整屏幕截图

ios - 将标记 infoWindow 添加到 Mapbox 注释

ios - 如何为非基于文本的内容创建 UIMenuController?