utilizar el campo userInfo! ¡Para eso es!
Un objeto ASIHTTPRequest (o ASIFormDataRequest) tiene una propiedad llamada .userInfo que puede tomar un NSDictionary con cualquier elemento que desee. Así que casi siempre voy:
- (void) viewDidLoad { // or wherever
ASIHTTPRequest *req = [ASIHTTPRequest requestWithUrl:theUrl];
req.delegate = self;
req.userInfo = [NSDictionary dictionaryWithObject:@"initialRequest" forKey:@"type"];
[req startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
if ([[request.userInfo valueForKey:@"type"] isEqualToString:@"initialRequest"]) {
// I know it's my "initialRequest" .req and not some other one!
// In here I might parse my JSON that the server replied with,
// assemble image URLs, and request them, with a userInfo
// field containing a dictionary with @"image" for the @"type", for instance.
}
}
establecer un valor diferente para el objeto en clave @"type"
en cada ASIHTTPRequest diferente que se hace en este controlador de vista, y ahora se puede distinguir entre ellos en -requestFinished:
y el mango de cada uno de ellos apropiadamente .
Si es realmente elegante, puede llevar consigo cualquier otra información que sería útil cuando finalice la solicitud. Por ejemplo, si tiene imágenes de carga lenta, puede pasarle un identificador al UIImageView que desea rellenar, y luego hacerlo en -requestFinished
después de que haya cargado los datos de la imagen.