如何从UIViewController中删除外部UIViews?

时间:2016-08-12 10:01:20

标签: ios objective-c xcode ios8 ios9

我在UIViewController外部添加了多个UIViews,并且所有视图都连接了周插座。如何弹出ViewController时释放所有视图的内存。enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

首先:xib顶层的视图(或其他对象)在其对应的视图控制器中不应具有weak种属性。与视图层次结构中的视图不同,它们在加载xib后没有所有者,因此无论如何它们都会被释放。

现在你似乎直接使用ivars(为什么?),所以我实际上不确定,但我认为这不会有所作为。假设Interface Builder接受那些作为出口并设置它们,它们很快就会在没有所有者的情况下消失。

从这个角度来看,你已经保存了记忆......

如果我不了解您的项目,我无法说清楚,但是您在遇到nil问题时没有寻求帮助这一事实让我猜你已经掌握了这些问题。在其他地方观看。要释放它们,您需要设置任何属性( 希望很快使用此属性)将它们强烈地引用到nil。 ARC为您完成剩下的工作。不使用ARC?开始使用它......

我建议重组一下。将视图控制器(我猜这是某种FirstFlyerViewController)强属性提供给视图(如果您肯定需要将它们放在视图层次结构之外,否则,只需添加他们作为某个地方的子视图)。使用它们,一旦你弹出视图控制器它就会被释放(注意这通常由框架而不是你自己完成),它们会随之被释放。