IBOutlets强或弱 - 它是否真的对内存管理产生影响?(弧)

Guy*_*ood 5 memory-management objective-c iboutlet ios ios7

我最近在这里和其他网站上一直在阅读有关IBOutlets是强还是弱的内容.官方判决是他们应该是弱者,除非他们引用顶级xib对象.

这可以.

然而,我还没有清楚地理解为什么将它们设置为强或弱实际上会对应用程序的内存管理产生影响.特别是从iOS6开始,viewDidUnload在接收内存警告时不再被调用,因此从这个意义上说,IBOutlets选择弱或强不会产生任何影响.

我是否正确地认为,对于视图控制器不再在导航堆栈上(即在它们被加载然后弹出之后),任何宣布为弱的IBOutlet将被释放?

感谢您的任何见解!

Ign*_*ioC 2

IBOutlet 可以声明为弱,因为它们将在 XIB 解析期间创建并添加到 UIView 堆栈中......因此您不需要对该对象的强引用。

当您声明 IBOutlet 为弱时,您可以确保当 UIViewcontroller 的主 UIView 消失时,每个子视图都将被删除,而不会出现任何内存泄漏。