我正在使用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; >