Memory leak in CGImage

Habe ich ein Speicherleck, ich weiß einfach nicht, wie zu lösen.

Dies ist die undichte code:

[newImg release];
CGColorSpaceRef d_colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context =  CGBitmapContextCreate(Data, width, 
                                              height, 
                                              8, 4*width, 
                                              d_colorSpace, 
                                              kCGImageAlphaNoneSkipFirst);
UIGraphicsPushContext(context);
CGImageRef new_img = CGBitmapContextCreateImage(context);
UIImage * convertedImage = [[UIImage alloc] initWithCGImage:
                             new_img];
CGImageRelease(new_img);
CGContextRelease(context);
CGColorSpaceRelease(d_colorSpace);
newImg = convertedImage;

Ich ändern, pixel-Informationen gespeichert, in Daten, die dann mit dieser Methode erstelle ich ein UIImage zurück aus den Daten (die als unsigned char array)

Xcode instruments sagt mir, dass es Lecks in hier:

CGImageRef new_img = CGBitmapContextCreateImage(context);

Und hier:

UIImage * convertedImage = [[UIImage alloc] initWithCGImage:
                             new_img];

obwohl ich beide von Ihnen 🙁 Kann jemand mir sagen, wie man dieses Problem lösen?

Vielen Dank im Voraus ^-^

Wo sind Sie die Freigabe convertedImage? Auch, warum veröffentlicht Ihr newImg an der Spitze, wenn Sie es später?
newImg ist ein istance-Eigenschaft, so enthält er möglicherweise ein älteres Bild, das ist der Grund, warum ich release es in Erster Linie, weil ich überschreiben Sie ihn mit dem convertedImage. die convertedImage darf nicht veröffentlicht werden, weil es wird gespeichert werden, in der newImg
Sie falsch verstanden habe, wie memory-management arbeitet in Objective C, sollten Sie nur freigeben Objekte, die Sie zuordnen. Siehe mein Beitrag unten
Sie nie nennen UIGraphicsPopContext()
Wenn newImg ist eine Instanz der Eigenschaft, als [newImg release]; nicht funktionieren sollte, denn es sollte selbst.newImg; Oder bin ich da falsch?

InformationsquelleAutor XelharK | 2010-02-26

Schreibe einen Kommentar