Revision: 34821
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 28, 2010 17:34 by leemills
Initial Code
/*-------------------------------------------------------------
* DECLORATION
*------------------------------------------------------------*/
NSMutableDictionary *receivedData;
/*-------------------------------------------------------------
* IMPLEMENTATION
*------------------------------------------------------------*/
- (void)startAsyncLoad:(NSURL*)url tag:(NSString*)tag {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
CustomURLConnection *connection = [[CustomURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES tag:tag];
if (connection) {
[receivedData setObject:[[NSMutableData data] retain] forKey:connection.tag];
}
}
- (NSMutableData*)dataForConnection:(CustomURLConnection*)connection {
NSMutableData *data = [receivedData objectForKey:connection.tag];
return data;
}
- (void)load {
receivedData = [[NSMutableDictionary alloc] init];
NSURL *url1 = [NSURL URLWithString:@"http://blog.emmerinc.be"];
NSURL *url2 = [NSURL URLWithString:@"http://www.emmerinc.be"];
NSURL *url3 = [NSURL URLWithString:@"http://twitter.com/emmerinc"];
[self startAsyncLoad:url1 tag:@"tag1"];
[self startAsyncLoad:url2 tag:@"tag2"];
[self startAsyncLoad:url3 tag:@"tag3"];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSMutableData *dataForConnection = [self dataForConnection:(CustomURLConnection*)connection];
[dataForConnection setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSMutableData *dataForConnection = [self dataForConnection:(CustomURLConnection*)connection];
[dataForConnection appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSMutableData *dataForConnection = [self dataForConnection:(CustomURLConnection*)connection];
[connection release];
// Do something with the dataForConnection.
}
/*-------------------------------------------------------------
* CUSTOM NSURLCONNECTION CLASS
*------------------------------------------------------------*/
@interface CustomURLConnection : NSURLConnection {
NSString *tag;
}
@property (nonatomic, retain) NSString *tag;
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately tag:(NSString*)tag;
@end
/*-------------------------------------------------------------
* IMPLEMENTATION
*------------------------------------------------------------*/
@implementation CustomURLConnection
@synthesize tag;
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately tag:(NSString*)tag {
self = [super initWithRequest:request delegate:delegate startImmediately:startImmediately];
if (self) {
self.tag = tag;
}
return self;
}
- (void)dealloc {
[tag release];
[super dealloc];
}
@end
Initial URL
Initial Description
Initial Title
Multiple async NSURLConnections
Initial Tags
Initial Language
Objective C