【问题标题】:iPhone: Get Response From Finished Request [ASIHttpRequest]iPhone:从完成的请求中获取响应 [ASIHttpRequest]
【发布时间】:2009-11-05 05:04:06
【问题描述】:

我正在尝试在 iPhone 上使用 ASIHttpRequest 从我网站上基于查询字符串的 API 中获取一些信息。

目前,我正处于设计的规划阶段,我有点不知道应该如何进行。

我想要一个类,它可以处理我需要的所有请求。我计划让 iPhone 应用程序的不同部分调用这个类,并且在类中,我想运行 ASIHttpRequest 代码。例如:

  1. 我将弹出一个将登录的模式视图。
  2. 此模式视图将使用用户调用函数/传递给 API 类,然后将 URL 放在一起并调用它。
  3. 一旦 URL 请求被处理并完成,它将进入 requestFinished 方法或任何我选择的选择器。
  4. 模态视图将取回 responseString 并按需要继续。

这就是我卡住的地方。我想以某种方式将 responseString 传递回网络 url 请求的原始调用者。

我应该使用委托方法吗?如果是这样,我如何从 requestFinished 方法中调用它?我想过这一点,但我对如何让 requestFinished 函数调用该委托感到有些困惑。我可能缺少一种简单的方法来将该委托作为对象与 ASIHttpRequest 一起传递。

我也考虑过 NSNotificationCenter,但我觉得这比使用委托更有用。

感谢您提供的任何帮助。

【问题讨论】:

    标签: iphone objective-c oop delegates asihttprequest


    【解决方案1】:

    这取决于你想对响应做什么。如果您只想显示一条带有响应的警报消息,您可以直接在您的请求 delagate 方法中执行此操作。另一种方法是将您的响应与共享数据一起存储在类中,并发布通知以告诉侦听器它有数据要处理。这并不难)和第三种变体。您可以使用委托和选择器属性为客户端-服务器通信创建一个基本类。如果需要,只需调用 [delegate performSelector:selector] 即可。然后可以继承其他类进行登录、检查版本等。

    【讨论】:

    • 您能否扩展第三个选项?我试图计划一下,但我没有按照我认为的那样看待它。
    【解决方案2】:

    您可以继承 ASIHttpRequest 并覆盖它的 - (void)requestFinished,这允许您在后台线程上进行一些处理(并且仍然调用 [super requestFinished];),或者只需使用访问器添加一个实例变量 id myDelegate;,以便您可以访问它来自您的-requestFinished

    【讨论】:

    • 使用委托是处理此问题的最佳方式吗?
    • 没有完美的视力,是的,我想是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多