创建多个NSURLConnections.如何识别哪个异步调用

Xet*_*ius 10 iphone cocoa-touch

我打算使用NSURLConnection创建2个请求.当服务器响应并调用connectionDidFinishLoading时,它将连接作为参数传递,但是如何识别传入的连接?

cdu*_*uhn 12

将两个NSURLConnection对象保存为传递给connectionWithRequest的任何委托对象的成员变量:delegate:.然后你可以将每个与传递给connectionDidFinishLoading的NSURLConnection进行比较,并做出适当的响应:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    if (connection == firstConnection) {
        // do something
    }
    else if (connection == secondConnection) {
        // do something else
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个稍微更面向对象的选项是创建两个不同的委托对象,每个委托对象都知道如何处理每种类型的连接.然后在创建每个连接时传递适当的委托.这样你就不需要检查你有哪个连接,因为每个委托只接收connectionDidFinishLoading:为自己的连接.

  • 这不是一个非常可扩展的解决方案 (3认同)