最近我在这里和其他网站上阅读了很多有关IBOutlets应该是强引用还是弱引用的文章。官方结论是它们应该是弱引用,除非它们引用顶层xib对象。
这没问题。
但是目前我还不清楚设置它们为强或弱实际上会如何影响应用程序的内存管理。特别是自iOS6以来,当接收到内存警告时,viewDidUnload将不再被调用,因此从这个意义上说,将IBOutlets设置为弱引用或强引用并没有区别。
但是,我是否正确地认为对于不再位于导航堆栈上的视图控制器(即在加载后弹出的视图控制器),任何声明为弱引用的IBOutlets都将被释放?
感谢您的任何见解!
这没问题。
但是目前我还不清楚设置它们为强或弱实际上会如何影响应用程序的内存管理。特别是自iOS6以来,当接收到内存警告时,viewDidUnload将不再被调用,因此从这个意义上说,将IBOutlets设置为弱引用或强引用并没有区别。
但是,我是否正确地认为对于不再位于导航堆栈上的视图控制器(即在加载后弹出的视图控制器),任何声明为弱引用的IBOutlets都将被释放?
感谢您的任何见解!
superview
(即保持视图存活直到它们成为视图层次结构的一部分,且不会引起强引用循环),则应该将其设置为weak
。同时,如果任何视图被添加到/从任何视图中,则最好使用strong
引用来确保视图保持存活,直到您最终想要释放它。 - holex