Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone:从完成的请求获取响应[ASIHttpRequest]_Iphone_Objective C_Oop_Delegates_Asihttprequest - Fatal编程技术网

iPhone:从完成的请求获取响应[ASIHttpRequest]

iPhone:从完成的请求获取响应[ASIHttpRequest],iphone,objective-c,oop,delegates,asihttprequest,Iphone,Objective C,Oop,Delegates,Asihttprequest,我正试图在iPhone上使用ASIHttpRequest,从我网站上基于查询字符串的API获取一些信息 目前,我正处于设计的规划阶段,我有点被困在应该如何进行的问题上 我想有一个类,它将处理我需要的所有请求。我计划让iPhone应用程序的不同部分调用这个类,在这个类中,我想运行ASIHttpRequest代码。例如: 我将弹出一个模式视图,该视图将登录 这个模式视图将调用一个函数,并将user/pass传递给API类,然后API类将把URL放在一起并调用它 一旦URL请求被处理并完成,它将进入r

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

目前,我正处于设计的规划阶段,我有点被困在应该如何进行的问题上

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

  • 我将弹出一个模式视图,该视图将登录
  • 这个模式视图将调用一个函数,并将user/pass传递给API类,然后API类将把URL放在一起并调用它
  • 一旦URL请求被处理并完成,它将进入requestFinished方法或我选择的任何选择器
  • 模态视图将返回responseString并根据需要继续
  • 这就是我被困的地方。我想以某种方式将responseString传递回网络url请求的原始调用方

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

    我也考虑过NSNotificationCenter,但我觉得这比使用一个代理要多


    我感谢您提供的任何帮助。

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

    您可以将ASIHttpRequest子类化,或者覆盖其
    -(void)requestFinished
    ,这允许您在后台线程上执行一些处理(仍然调用
    [super requestFinished];
    ),或者只需添加一个实例变量
    id myDelegate
    有一个访问器,这样您就可以从您的
    -requestFinished

    访问它。使用委托是否是处理此问题的最佳方式?如果没有完美的视觉效果,我想是的。您是否可以扩展第三个选项?我试图把它计划出来,但我没有看到我认为我应该的方式。