我有一个CALayer
对象sublayer
。我在我的视图控制器中将它用作self.sublayer
,因为我已将它作为视图控制器头文件中的一个属性。需要释放CALayer的内容属性中包含的CGImage
我的子层的内容属性等于设置为使用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
,还是我在T纠正h that它不是在技术上释放CGImage
?
我现在在我的应用程序中遇到内存问题,所以我需要确保我正确释放这个CGImage
。
'sublayer'是视图的图层吗? –
这是我如何设置子图层:self.subLayer = [CALayer图层]; – user3344977