gpt4 book ai didi

objective-c - dealloc 调用的困惑

转载 作者:行者123 更新时间:2023-12-03 16:58:43 26 4
gpt4 key购买 nike

我有一个基本问题。

我知道当对象的引用计数为零时会调用dealloc,dealloc会释放该对象持有的所有资源或释放内存,对吧?

如果我们向该对象发送释放消息,对象引用计数就会变为零,对吧?

让我们考虑以下对象,其属性创建为,

@property (retain) NSString* myString;//reference count 1

并释放

[myString release];//reference count 0
[super dealloc];

除了 dealloc 之外,我不会在任何地方释放 myString 对象。

我的问题是谁将 myString 对象引用计数设置为零以便调用 dealloc?

请澄清我的疑问。

最佳答案

任何维护对象所有权的事物都有责任释放它。例如,如果您发布的代码是唯一维护存储在 myString 中的 NSString 所有权的东西,那么当您调用release时,引用计数将减少,并且该对象可能会被释放(字符串文字不同)。现在,如果您传递 myString 或其他请求的 myString 并保留它,那么该代码还负责释放它,这可能是在 dealloc 方法中释放它之前或之后.

我建议引用documentation为了强化这个概念。

关于objective-c - dealloc 调用的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9379304/

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