ios - IBOutlets Strong or Weak - 它真的对内存管理有影响吗? (弧)

标签 ios objective-c memory-management ios7 iboutlet

我最近在这里和其他网站上阅读了很多关于 IBOutlets 应该强还是弱的文章。官方判定它们应该是弱的,除非它们引用顶级 xib 对象。

这很好。

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

虽然对于不再位于导航堆栈中的 View Controller (即在它们被加载然后弹出之后),我认为任何声明为弱的 IBOutlets 都将被释放,但我的想法是否正确?

感谢您的任何见解!

最佳答案

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

当您声明一个 IBOutlet weak 时,您确保当 UIViewcontroller 的主 UIView 消失时,每个 subview 都将被删除,而不会发生任何内存泄漏。

关于ios - IBOutlets Strong or Weak - 它真的对内存管理有影响吗? (弧),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21826816/

相关文章:

ios - 不同类中的委托(delegate)和数据源可能吗? - UITableView

ios - 在 Sprite Kit 场景中隐藏 iAd

iphone - iOS 本地化中使用 .strings 文件进行内存管理

java - Java中 "new Integer(1)"是如何分配内存的?

iphone - 集成Google Analytics(分析)时出错?

ios - Swift UnsafeMutableRawPointer 错误

ios - Region Monitoring 监听的 "region"个数,iOS7根据用户当前位置

ios - 无法导航到 IOS Storyboard中的目标 View Controller

iphone - 模态视图 Controller 内使用 UINavigationController 进行内存管理

iphone - 为什么这是一个无限循环?