如何在Objective-C中获得未调用方法的返回值
||
我正在使用ASIHTTPRequest通过我的iOS应用程序中的一个名为SubmitUserCredentials的方法执行异步URL请求。可以很好地发送请求,但是问题是,当从服务器返回响应时,会设置ASIHTTPRequest,以便另一个方法requestFinished接收并返回它。
首先,当我是从视图控制器运行的方法SubmitUserCredentials时,如何掌握requestFinished返回的服务器响应?
没有找到相关结果
已邀请:
2 个回复
肺鬼耙扮群
然后,您实现
ViewController的实现中的方法。现在,当请求完成时,将调用ViewController中的requestFinished:方法。如果您需要将信息与请求一起传递并在requestFinished:方法中可用,则可以将ASIHTTPRequest的userInfo属性设置为所需的值,并将其在requestFinished的request参数中可用: 对评论的回应: 如果您愿意在收到响应之前阻塞线程,则可以使用startSynchronous方法(来自ASI网站http://allseeing-i.com/ASIHTTPRequest/How-to-use的代码):
这样,您的submitUserCredentials方法将在服务器响应时坐下来等待,但它将服务器响应返回给该方法。如果在等待响应时阻止UI不能为您服务(并且可能无法),则可以启动一个新线程来运行您的SubmitUserCredentials方法,然后从那里调用startSynchronous:
磋判粗惊
如果这样做了,那么对于上面的
所指的任何内容,都应该实现
方法。 您不确定如何在
中获取响应字符串吗?在这种情况下,解决方案很简单:
即请求的
或
会为您提供所需的内容。 还是说您想以某种方式处理ѭ12中的响应(可能是因为此方法的局部变量中有很多上下文)?如果是这样,那么最好的选择可能是使用块:
还是问题在于您希望ASIHTTPRequest以同步方式工作?在这种情况下,您可以执行以下操作:
但是不建议您这样做。这样做会挂起应用程序的主线程(假设您在主线程中进行调用),这不是一件好事。如果这确实是您要找的答案,那么您可能需要阅读事件驱动的编程。 注意:上面所有代码示例都是从ASIHTTPRequest的出色的“如何使用它”文档页面复制而来的。