【发布时间】:2014-03-16 14:46:09
【问题描述】:
我最近在这里和其他网站上阅读了很多关于 IBOutlets 应该强还是弱的信息。官方的判断是它们应该是弱的,除非它们引用顶级 xib 对象。
这很好。
但是我还没有清楚地理解为什么将它们设置为强或弱实际上会对应用程序的内存管理产生影响。特别是从 iOS6 开始,viewDidUnload 似乎不再在收到内存警告时被调用,所以从这个意义上说,IBOutlets 的弱或强选择没有任何区别。
我是否认为对于不再位于导航堆栈上的视图控制器(即在它们被加载然后弹出之后),任何声明为弱的 IBOutlets 都会被释放?
感谢您的任何见解!
【问题讨论】:
-
一般来说,如果出口
weak已经有静态superview,则保留它们(这会使视图保持活动状态,直到它们成为视图层次结构的一部分并且不会导致强保留周期),如果任何视图被添加到任何view或从strong引用中删除,最好确保视图保持活动状态,直到您最终想要释放它。
标签: ios objective-c memory-management ios7 iboutlet