Réponse à moi-même:
Ma compréhension de la documentation dit que utilisant le mot - block
et réglage de la variable à zéro après l'avoir utilisé à l'intérieur du bloc devrait être ok, mais il affiche toujours le message d'avertissement.
__block ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:...
[request setCompletionBlock:^{
NSDictionary *jsonDictionary = [[CJSONDeserializer deserializer] deserialize:request.responseData error:nil];
request = nil;
// ....
}];
Mise à jour: l'ai eu à travailler avec le mot-clé '_faiblesse "au lieu de"_block", et à l'aide d'une variable temporaire:
ASIHTTPRequest *_request = [[ASIHTTPRequest alloc] initWithURL:...
__weak ASIHTTPRequest *request = _request;
[request setCompletionBlock:^{
NSDictionary *jsonDictionary = [[CJSONDeserializer deserializer] deserialize:request.responseData error:nil];
// ...
}];
Si vous souhaitez également cible iOS 4, utilisez __unsafe_unretained
au lieu de __weak
. Même comportement, mais le pointeur reste bancale au lieu d'être automatiquement mis à zéro lorsque l'objet est détruit.