Singleton用于不同的NSURLConnection

时间:2013-04-15 08:15:03

标签: ios objective-c nsurlconnection

我总是用于连接Server singleton类。我没有检查服务器的响应和轻松获取数据。现在我需要使用10个不同的请求。我创建属性NSURLConnection。那么如何识别我在委托方法中使用的连接,如

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

因为我从每个请求中获取不同的数据

1 个答案:

答案 0 :(得分:2)

您可以做的是拥有一个自定义连接类,表示连接,其数据以及可选的有关连接的一些信息。我用这个:

@interface MyConnection : NSObject

@property NSURLConnection *connection;
@property id info;
@property NSMutableData *data;

@end

然后将连接放在一个数组中,并将实际的NSURLConnection对象相互比较,以找出接收数据/失败的连接等。

创建连接:

 NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:someRequest delegate:self];

    if (connection){
        MyConnection *con = [[MyConnection alloc] init];
        con.connection = connection;
        con.data = [NSMutableData data];
        [self.arrayWithConnections addObject:con];
    }

方法:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    MyConnection *con = [self getConnection:connection]
    [con.data appendData:data];
}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    MyConnection *con = [self getConnection:connection];
    [con.data setLength:0]; 
}

-(MyConnection *)getConnection:(NSURLConnection *)con
{
    for (MyConnection *myCon in self.arrayWithConnections)
        if ([con isEqual: myCon.connection])
            return myCon;
    return nil;
}