2009-05-10 5 views
3

Ich habe die folgende Funktion:Warum klagt Clang über alle meine Autoreleased-Objekte?

- (NSString *)urlEncodedValue { 
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(
        kCFAllocatorDefault, 
        (CFStringRef)self, 
        NULL, 
        CFSTR("?=&+/\r\n"), 
        kCFStringEncodingUTF8 
); 

return [result autorelease]; 

} 

Warum ist mir folgende Beschwerden geben Clang?

  • 1 Aufruf 'CFURLCreateStringByAddingPercentEscapes' zur Funktion eines Core Foundation kehrt Objekt mit einem +1 behalten count (besitzender Referenz)
  • 2 Objekt gesendet -autorelease Nachricht
  • 3-Objekt zurückgegeben als ein Verweis auf dem Besitz Anrufer (Einzelzählung Anrufer)
  • 4 Objekt überAutoReleased übertragen behalten: Objekt wurde gesendet -autorelease aber das Objekt Null (lokal sichtbar) behalten zählt

um die Soweit ich weiß, entspricht dies den Apple-Richtlinien bezüglich Speicherverwaltung und Objektbesitz. Muss ich das Objekt explizit freigeben? Dieser Fehler ist in meinem Projekt unter ähnlichen Umständen 19 Mal aufgetreten. Was mache ich falsch?

+0

Gute Frage ... Ich habe das gleiche Problem, und ich verstehe auch nicht, was los ist. Vielleicht ist es ein Bug im Klängen ... –

+0

Es könnte sein, aber ich würde das schwer zu glauben, da Autoreleased-Objekte nicht genau obskur sind. Es passiert auch, wenn ich die Autorelease mit dem + alloc und -init verschachtele. –

Antwort

3

Ich habe die Antwort auf meine eigene Frage gefunden und posten sie hier, wenn jemand anderes über das Problem stolpert. Ich benutzte checker-0.198, Checker-0.204 meldet kein solches Problem. Scheint, es war eine vorübergehende Regression.

Verwandte Themen