2010-02-20 3 views
1

Instruments me dit que ce code fuit. Où? Dois-je libérer conn?D'où provient ce code?

- (void)loadFeatureXML:(id<BPLFeatureLoaderDelegate>)delegate { 

    _delegate = delegate; 

    NSURLConnection *conn; 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.myxmlfeed"]]; 
    if ([NSURLConnection canHandleRequest:request]) { 
     conn = [NSURLConnection connectionWithRequest:request delegate:self]; 
     if (conn) { 
     self.featureXMLData = [NSMutableData data]; 
     } 
    } 
} 
+0

Les instruments doivent également vous montrer quels objets sont divulgués et d'où ils proviennent. – ComSubVie

Répondre

1

Ma meilleure supposition est que vous perdez le délégué; pourquoi pas:

self._delegate = delegate; 

Comme vous avez ci-dessous pour self.featureXMLData?

+0

Cela provoque une erreur, puisque je n'ai pas de setter pour _delegate. –

+1

Mais si vous remplacez ce pointeur sans lui envoyer un message 'release' ou' autorelease', comment le système sait-il libérer l'ancien? Je suppose que sans voir d'autre code qui définit '_delegate' c'est difficile à dire - je ne vois pas d'autres problèmes surgir. –

+0

De plus, si vous avez * un * setter explicite (c'est-à-dire non-synthétisé) pour featureXMLData, il doit être vérifié pour s'assurer qu'il fait le bon garder/release. – nall