当UIView发布时,UIView的CALayer并不总是被释放

时间:2014-04-16 09:24:13

标签: ios objective-c cocoa-touch debugging memory-management

我正在使用Instruments调查各种内存问题,并且在此过程中注意到如果我将UIView的描述打印到调试日志,您可以看到支持UIView的CALayer的内存地址。

UIView发布后(即UIViewController发布)我暂停了执行并试图在UIView的内存地址上找到PO,但我测试的所有内容都没有,这是我的预期,但是一些与之相关的CALayer当PO'ed仍然将实时描述打印到记录器中时发布了UIViews,这基本上意味着它们尚未被释放并且仍在内存中。

什么会导致在释放父UIView时不释放CALayer,这是一种缓存机制,错误或泄漏。

值得注意的是我正在使用iOS7和ARC。

示例:

发布UIViewController之前

UIView的PO:

Printing description of self->_reviewsContainerView:
<UIView: 0xefb4dc0; frame = (0 466; 229 554); autoresize = RM+BM; layer = <CALayer: 0xefdfb30>>

CALayer的PO:0xefdfb30:

po 0xefdfb30 <CALayer:0xefdfb30; position = CGPoint (114.5
743); bounds = CGRect (0 0; 229 554); allowsGroupOpacity = YES; >

0 个答案:

没有答案