目标c – 我什么时候应该使用强对弱的IBOutlets(进一步澄清)

目标c – 我什么时候应该使用强对弱的IBOutlets(进一步澄清),第1张

概述我以为我从这个问题上清楚地了解了 – > Should IBOutlets be strong or weak under ARC?但我最近有一个讨论让我完全困惑.有人可以确认以下是否正确? (如果这是一个重复的,我并不意味着打破任何规则..只需要澄清,因为我可以比图表更好地理解图表) 在ARC(MacOSx)下 > view1 = strong > MainView = weak(在Window 我以为我从这个问题上清楚地了解了 – > Should IBOutlets be strong or weak under ARC?但我最近有一个讨论让我完全困惑.有人可以确认以下是否正确? (如果这是一个重复的,我并不意味着打破任何规则..只需要澄清,因为我可以比图表更好地理解图表)

在ARC(MacOSx)下

> vIEw1 = strong
> MainVIEw = weak(在WindowControllerA中)
> MainVIEw = strong(在VIEwControllerB中)
> vIEw2 = strong
> vIEw3 = weak(在VIEwcontrollerB中)
> vIEw3 = strong(在VIEwControllerC中)

如果这是正确的,可以有人确认请..

在上图中,我们在屏幕上有一个windowControllerA.在windowControllerA的视图中,有2个NSVIEw. vIEw1属于windowController,但mainVIEw属于视图中的vIEwController,VIEwControllerB.

VIEwControllerB还包含其mainVIEw中的2个视图. VIEw2由vIEwControllerB拥有,而vIEw3属于另一个实例化的VIEwController VIEwControllerC.

VIEwController C有一个它拥有的视图.

解决方法 用于子视图的大多数插座不需要是强引用,因为毕竟,它们是作为视图层次结构的一部分加载的子视图.只要顶级视图存在,并且只要不从父母中删除子视图,视图层次结构中的子视图将在其顶级视图的生命周期中由父母保留.

在ARC之前的日子里,有些人很乐意依靠视图层次结构来保留他们的意见,并设置自己的出口属性.其他人不喜欢这样的观点,即视图层次结构中的打嗝会让他们留下一小撮悬挂指针,因此设置其属性保留. ARC给了我们零弱的参考,所以如果他们指向的对象被释放,那么你的销售点将被设置为零,并且对于出口使用弱引用看起来更安全.另一方面,如果要保留对视图的引用,即使包含的视图层次结构被取消分配,您应该将该引用设置为强.

由于您的视图控制器负责其管理的视图层次结构(即“拥有”),因此应该对顶级视图有很强的引用.您不需要担心太多,因为任何UIVIEwController派生的视图控制器的视图属性设置为保留(即强).

总结

以上是内存溢出为你收集整理的目标c – 我什么时候应该使用强对弱的IBOutlets(进一步澄清)全部内容,希望文章能够帮你解决目标c – 我什么时候应该使用强对弱的IBOutlets(进一步澄清)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1030488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存