gpt4 book ai didi

ios - 手动将 nil 设置为 swift 对象以避免保留循环?

转载 作者:可可西里 更新时间:2023-11-01 00:52:31 25 4
gpt4 key购买 nike

我最近一直在分析一个用 swift 编写的应用程序,总体上对 ARC 感到非常沮丧,因为它来自以标记清除 GC 为常态的语言。

特别是 UIViewController非常 复杂且对其他 class 有很多依赖性,我一直未能让 ARC 正常工作.但我知道,只需将保留的对象设置为 nil 即可在不涉足 ARC 的情况下释放它们。

对于 UIViewController 尤其如此,我可以将 nil 设置为 viewDidDisappear 或类似内容中的所有保留对象。

这种做法被认为是不好的/有害的吗?我是否应该更努力地让 ARC 工作?

编辑:通过不工作,我的主要意思是打破Strong Reference Cycle,当有多个依赖层次结构时,它会变得非常笨拙。

编辑:仅供引用,我知道在声明/捕获列表中使用 weak/unowned 会打破保留周期。我问的是,由于对象的复杂性,或者更确切地说,对象的保留周期,使用这些规范变得笨拙的情况。

最佳答案

我认为你应该看看你的类结构 - 基本上找出哪些类应该“拥有”某些属性(即强引用)以及谁只需要在它们可用时引用它们(即弱引用)。

我认为这很值得考虑,因为它可能会简化您的代码。它还会让您有机会真正考虑特权 - 所有这些其他类是否真的需要访问这些对象等。

将事物设置为 nil 的真正问题在于,您必须确保您正在捕获所有强引用循环,并且最终,您不会从 ARC 中获益,让您的生活更轻松。

关于ios - 手动将 nil 设置为 swift 对象以避免保留循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com