iPhone: CALayer Speicherverlust Frage
-
24-09-2019 - |
Frage
Würde der Code unten Ursache meinen Code zu lecken? Genauer gesagt, bin ich den newImage
oder den Inhalt von mainPageLayer
verantwortlich für die Freigabe (das ist ein CALayer
Objekt)? Ich bekomme einen Speicher jedes vierte Mal Warnung, dass Methode aufgerufen wird, aber kann nicht herausfinden, warum ...
Ich kann auch nicht erklären, warum mainPageLayer.contents = [newImage CGImage];
eine Warnung wirft, dass das Argument, das ich vorbei bin eine inkompatiblen Zeiger Zeit. Das Bild zeigt nach oben ganz gut innerhalb der Schicht.
-(void)setPrimaryPage:(UIImage *)newImage {
pImageSizeWidth = newImage.size.width;
pImageSizeHeight = newImage.size.height;
[mainPageLayer setFrame:CGRectMake(0, 0, pImageSizeWidth, pImageSizeHeight)];
mainPageLayer.contents = [newImage CGImage];
}
Lösung
die Inhalte Eigenschaft ist wie folgt definiert:
@property(retain) id contents
was bedeutet, daß die von CGImageRef
newImage
zurückgehalten wird. Ob Ihr Code Lecks ist nicht klar, aus dem Code: Es gibt nicht genug Kontext. Es wird nur auslaufen, wenn newImage
beim Aufruf Ihrer setPrimaryPage:
beibehalten wurde.