(ou même seulement une classe avec un délégué)Comment libérer plusieurs classes qui ont le même délégué?
Dites que j'ai une classe appelée DataGetter, qui télécharge un fichier à partir du Web. Il a une méthode déléguée, qui se déclenche lorsque le fichier a été téléchargé:
- (void) dataGetterFinished:(DataGetter *)dataGetter;
Alors somehere dans mon code, je peux mettre en place plusieurs fichiers à télécharger comme ceci:
// in AViewController.m
DataGetter *blueFile = [[DataGetter alloc] init];
blueFile.delegate = self;
[blueFile getData:@"http://example.com/blue-file"];
DataGetter *redFile = [[DataGetter alloc] init];
redFile.delegate = self;
[redFile getData:@"http://example.com/red-file"];
L'utilisation clang statique analyseur, chaque ligne alloc ci-dessus obtient une erreur 'fuite potentielle d'un objet affecté en ligne ...'. Alors, comment pourrais-je libérer l'objet. Il doit traîner parce qu'il a un délégué. Alors, est-ce OK pour libérer la dernière ligne de la méthode dataGetterFinished, comme si
- (void) dataGetterFinished:(DataGetter *)dataGetter
{
// code
[dateGetter release];
}
... ou devrais-je utiliser autorelease en quelque sorte?
merci! Quel est l'avantage d'utiliser NSMutableArray plutôt que de simplement libérer la classe dans la méthode déléguée? est-ce simplement pour faire plaisir aux dieux clangés? – cannyboy
Ouais je le dirais, et au cas où vous voulez accéder aux dataGetters plus tard, vous pouvez juste regarder dans le tableau. J'ai toujours pensé que c'était une façon beaucoup plus ordonnée de le faire. –