gpt4 book ai didi

objective-c - 什么时候在 iOS 的 ARC 中发布强大的属性?

转载 作者:可可西里 更新时间:2023-11-01 04:40:16 25 4
gpt4 key购买 nike

我有一个关于 iOS 中的 ARC 的快速问题。 (抱歉,我问了很多此类问题,但我对内存管理感到非常困惑。)。重要的是要注意,我从未使用过旧的内存维护系统(retainreleaseassign...等),所以我不我真的不知道这些术语是什么意思。

现在我很困惑我必须做些什么来确保正确释放强大的属性。例如,假设我正在制作一个学校应用程序,并且我的 School 对象包含对 5 个不同的 Child 对象(不在数组中)的强属性引用。每个 Child 对象都有一个指向 Book 对象的强指针(属性)。

如果我从我的学校中删除了一个 Child 对象(比如通过使其属性 = nil,或者通过更改我的属性以指向一个新对象),它的 Book 被正确释放?我必须做什么才能确保是这种情况?我需要在 dealloc 方法中编写 self.myBook = nil 吗?如果 Child 是一个 View Controller,我是否需要在 viewDidUnload 方法中编写 self.myBook = nil

我只针对 iOS 5(及更高版本),因此旧的内存管理方式对我来说并不重要。

最佳答案

If I remove one of the Child objects from my school (say by making its property = nil, or by changing my property to point at a new object), will its Book be properly released?

是的,只要没有其他强引用,就会发布。

What do I have to do to make sure that this is the case?

没什么特别的:当您将对该对象的引用设置为nil 时,ARC 将减少该对象的引用计数,看到该对象不再被引用,然后继续删除它。它足够智能,可以递归地处理从被删除对象引用的项目,因此您不会泄漏任何内存。

您必须担心的一件事是循环引用:如果您的 BookChild 有强反向引用,要么使该引用,或者在将 Book 的引用设置为 nil 的同时清除它(第二个选项容易出错,因此不推荐)。

关于objective-c - 什么时候在 iOS 的 ARC 中发布强大的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141627/

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