gpt4 book ai didi

iphone - 我应该在 ARC 中使用 nil

转载 作者:行者123 更新时间:2023-12-01 19:14:51 26 4
gpt4 key购买 nike

我已经阅读了很多文章,但是当我实际阅读时,我认为我错过了一些东西。

我有一个应用程序,我正在为模块设置一个单例对象,该模块呈现在其他 View Controller 上。这个单例对象实例化其他子对象。完成任务后,我是 解散 Controller 并将 nil 设置为单例对象。但在仪器中,它显示我的这个模块创建的许多对象仍然存在。

我的第一个问题是 - 解散 Controller 是否释放其所有子对象?或者我必须明确将其设置为零。

我的应用程序仍在运行,当这些对象将来被释放时(它们不是泄漏,因为它们没有被仪器泄漏显示并且没有保留周期)或者我必须通过将它们设置为 nil 来明确强制,因为我不需要它们它们正在浪费内存。

为什么当我释放其 super 父对象(即单对象对象)时,这些强大的属性和两个或三个实例变量仍然存在。

在对象列表中,仪器显示的还有一些对象名称为 <x06...>malloc哪些是由我的代码方法分配的。我应该担心这些对象分配吗?

最佳答案

第一个问题:
不,它只是调用释放:引用计数减 1,但是当引用计数等于 0 时释放。

只需检查谁在解除 Controller 后对活着的对象进行引用。

该 Controller 必须获取对将与其一起释放的所有对象的所有引用,并且只有这个 Controller ,没有其他人。

关于在 ARC 中设置为零。 是的,这是一个很好的做法。
例如所有 网点自动(当您将其从 IB 拖动到具有右键的代码时)被创建为(非原子,弱)。 - 表示它将被设置为 当对象被释放时。

另外,关于 ARC、nils 和其他:http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1

关于iphone - 我应该在 ARC 中使用 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025149/

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