我有一个名为sublayer
的CALayer
对象。在我的视图控制器中,我将其作为self.sublayer
使用,因为我已经在视图控制器的头文件中将其设置为属性。
我将子层的内容属性设置为使用CGImageRef
对象imageRef
创建的UIImage
对象。
self.subLayer.contents = (id)[UIImage imageWithCGImage:imageRef].CGImage;
现在,我立即释放imageRef
对象,因为它已被用于创建子层内容,不再需要:
CGImageRelease(imageRef);
然而,以下是困扰我的问题。在代码的后续部分中,我将不再需要
self.sublayer.contents
,我想确保正确释放它所包含的 CGImage
。如果我NSLog
self.sublayer.contents
,它会将此打印到控制台:<CGImage 0x146537c0>
因此,我也需要能够释放这个CGImage
。我尝试使用下面的方法来释放
CGImage
,但NSLog仍然会在控制台上打印相同的输出:CGImageRelease((__bridge CGImageRef)(self.subLayer.contents));
如果我使用下面的方法,则NSLog将在控制台上打印(null)
,但我担心这从技术上讲并没有释放CGImage
:self.subLayer.contents = nil;
将子层的内容属性设置为nil
是否能正确释放CGImage
,或者我想这样做没有严格释放CGImage
?
我正在我的应用程序中遇到内存问题,因此我需要确保我正确释放了这个CGImage
。
sublayer
是视图的层吗? - David Rönnqvist