chose est, d'appeler clearDelegatesAndCancel
, vous devez avoir un gérer l'objet ASIFromDataRequest qui s'exécute de manière asynchrone. Cela signifie que vous devez le configurer comme une propriété, comme ...
@interface MyViewController : UIViewController <ASIHTTPRequestDelegate>
{
ASIFormDataRequest *theRequest
...
}
@property (nonatomic, retain) ASIFormDataRequest *theRequest;
Ensuite, dans votre .m, ne déclare pas de nouvel objet de demande, juste assigner votre formdatarequest à iVar de la classe:
@synthesize theRequest;
-(void)viewDidLoad //or whatever
{
self.theRequest = [ASIFormDataRequest requestWithUrl:myUrl];
// then configure and fire the request, being sure to set .delegate to self
}
-(void)viewWillDisappear:(BOOL)animated //or whatever
{
[self.theRequest clearDelegatesAndCancel];
}
-(void)dealloc
{
[theRequest release]; //don't not do this.
}
Le point est, vous devez vous configurer de sorte que vous avez obtenu la demande pour parler à alors qu'il fonctionne de manière asynchrone. D'ailleurs, c'est vraiment une bonne pratique. Si votre viewcontroller s'en va (disons en se déconnectant de la pile UINavController) avant que votre requête ne retourne, il essaiera d'appeler la méthode delegate sur un objet désalloué, et boom.
clearDelegatesAndCancel est celui que vous recherchez. – KishoreK