Iphone 同时使用多个NSURLConnection-最佳实践
在我的iPhone应用程序中,我能够正确使用NSURLConnection从URL下载数据。我只需将委托设置为我的UIView,并确保我设置了UIView以响应适当的委托函数,例如-connection:didReceiveResponse:。但是,如果对于类似类型的请求或多种类型的请求,我有许多NSURLConnections,则会变得很混乱,因为委托函数(如didReceiveRequest)不会区分不同的请求。异步请求的优点是,您应该能够同时执行多个请求,而不会阻塞主线程。如何同时使用多个NSURLConnection请求的最佳实践是什么?我更喜欢将它们封装在一个更高级别的对象中,比如ImageDownloader或一些WebServiceCall,其中包含所有每个连接/调用状态信息。我通常在这些对象中创建一个委托,以便调用方在操作成功或失败时获得更具体的回调。也许可以查看,而不是NSURLConnection。ASIHTTPRequest使这项工作变得非常简单。在这种情况下,我认为NSOperation是最好的选择。基于NSOperation,允许您将每个请求作为一个操作来处理,该操作充当其自身NSURLConnection的委托Iphone 同时使用多个NSURLConnection-最佳实践,iphone,ios,nsurlconnection,Iphone,Ios,Nsurlconnection,在我的iPhone应用程序中,我能够正确使用NSURLConnection从URL下载数据。我只需将委托设置为我的UIView,并确保我设置了UIView以响应适当的委托函数,例如-connection:didReceiveResponse:。但是,如果对于类似类型的请求或多种类型的请求,我有许多NSURLConnections,则会变得很混乱,因为委托函数(如didReceiveRequest)不会区分不同的请求。异步请求的优点是,您应该能够同时执行多个请求,而不会阻塞主线程。如何同时使用多个
不过,在这里您必须小心,因为默认情况下,NSO操作是在单独的线程上运行的,但是像这样的一些API需要在主线程上执行。如果您检查ASIHTTPRequest的源代码,您会注意到它们有一些基础结构,以确保在主线程上调用委托方法。为每个NSURLConnection和NSMutableData创建一个实例变量。所有委托方法都将NSURLConnection对象作为参数,因此您可以按如下方式匹配它们:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
if (connection == aConnection) {
// Do something with the data for aConnection
} else if (connection == otherConnection) {
// Do something with the data for otherConnection
}
}
这仍然限制了每个实例变量只能有一个连接,因此它不适用于,例如,每行上都有需要加载的图像的表视图。重复查看日期,问题已经存在5年多了。现在NSURLSession是最先进的。我不知道为什么它会出现在我的feed中。我没有看日期。