如何在iOS ARC中执行@selector(removeFromSuperviw)时立即释放子视图?

时间:2015-07-08 00:58:08

标签: ios

如标题所述。如何在iOS ARC中执行@selector(removeFromSuperviw)时立即发布子视图?似乎在[subview removeFromSuperview]之后没有发布子视图,导致内存泄漏。

1 个答案:

答案 0 :(得分:0)

如果它没有被下一个绘制周期(一小部分时间)释放,那么你将它保留在其他地方,或者你已经创建了一个保留循环。这是Cocoa中的经典内存泄漏错误,您需要找到您的错误。

在某处你有两个通过强引用相互引用的对象,其中一个需要是弱引用(或被删除,或设置为nil,或以其他方式被破坏)。一种可能的可能性是视图控制器具有对该视图的强引用。它可能实际上不是一个循环;它可能只是一些其他的活对象仍然有一个参考。

(不要过度阅读此内容.ARC不是垃圾收集。没有其他对象可以按字面意思和#34;这种观点。只是某个对象增加了保留数量并没有减少任何东西。但是,较新的开发人员有时会更容易假装它的垃圾收集无法处理保留周期。)

Cocoa With Love提供了一个很好的问题介绍。

使用ObjectAllocLeaks工具,仪器可以是一个有用的工具,但我经常发现一点思考和代码搜索可以更快地找到问题。