Tuesday, June 22, 2010

There is a complete example here that shows the basics of creating and using an ASINetworkQueue:

http://gist.github.com/150447



//
//  MyController.h
//
//  Created by Ben Copsey on 20/07/2009.
//  Copyright 2009 All-Seeing Interactive. All rights reserved.
//

#import
#import
@class ASINetworkQueue;

@interface MyController : NSObject {
ASINetworkQueue *networkQueue;
}

- (void)doNetworkOperations;

@property (retain) ASINetworkQueue *networkQueue;

@end

-------------------------------------------------------------------

//
//  MyController.m
//
//  Created by Ben Copsey on 20/07/2009.
//  Copyright 2009 All-Seeing Interactive. All rights reserved.
//

#import "MyController.h"
#import "ASIHTTPRequest.h"
#import "ASINetworkQueue.h"

@implementation MyController

- (void)dealloc
{
[networkQueue release];
[super dealloc];
}

- (void)doNetworkOperations
{
// Stop anything already in the queue before removing it
[[self networkQueue] cancelAllOperations];
// Creating a new queue each time we use it means we don't have to worry about clearing delegates or resetting progress tracking
[self setNetworkQueue:[ASINetworkQueue queue]];
[[self networkQueue] setDelegate:self];
[[self networkQueue] setRequestDidFinishSelector:@selector(requestFinished:)];
[[self networkQueue] setRequestDidFailSelector:@selector(requestFailed:)];
[[self networkQueue] setQueueDidFinishSelector:@selector(queueFinished:)];

int i;
for (i=0; i<5; i++) {
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com"]];
[[self networkQueue] addOperation:request];
}
 
[[self networkQueue] go];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// You could release the queue here if you wanted
if ([[self networkQueue] requestsCount] == 0) {

// Since this is a retained property, setting it to nil will release it
// This is the safest way to handle releasing things - most of the time you only ever need to release in your accessors
// And if you an Objective-C 2.0 property for the queue (as in this example) the accessor is generated automatically for you
[self setNetworkQueue:nil]; 
}
//... Handle success
NSLog(@"Request finished");
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
// You could release the queue here if you wanted
if ([[self networkQueue] requestsCount] == 0) {
[self setNetworkQueue:nil]; 
}
//... Handle failure
NSLog(@"Request failed");
}


- (void)queueFinished:(ASINetworkQueue *)queue
{
// You could release the queue here if you wanted
if ([[self networkQueue] requestsCount] == 0) {
[self setNetworkQueue:nil]; 
}
NSLog(@"Queue finished");
}

@synthesize networkQueue;
@end




No comments:

Post a Comment