gpt4 book ai didi

iphone - 通过赋值自动释放前一个对象

转载 作者:行者123 更新时间:2023-12-03 21:22:52 26 4
gpt4 key购买 nike

如果我有这样的函数

void setSomeObject( SomeObjectClass obj /*, and some other params*/ )
{
[_previous autorelease];
_previous = obj;
}

据我了解,自动释放消息被发送到对象本身(而不是_previous)因此,在某一时刻,当 setSomeObject 超出范围时,原始对象会自动释放(如果有)。它是否正确?我没有使用属性,但我想通过使用它们,当我执行 self.previous = obj; 时,前一个对象的释放将是自动的?

最佳答案

当您向对象发送 -autorelease 消息时,它会被添加到事件的 NSAutoreleasePool 中,并在运行循环运行时被清空。如果您说[_previous autorelease],则只有该对象会被自动释放,如果您随后说_previous = obj,则只会更改变量的引用。旧对象仍然自动释放。

如果您在 setter 方法中执行此操作,则模式通常如下:

- (void)setSomeObject:(MyObjClass *obj) {
if (obj != someObject) {
[someObject release];
someObject = [obj retain]; // or copy, depending on what you want
}
}

关于iphone - 通过赋值自动释放前一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137226/

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