gpt4 book ai didi

iphone - 处理何时回调已释放的委托(delegate)?

转载 作者:行者123 更新时间:2023-12-03 21:11:50 25 4
gpt4 key购买 nike

我在两个类之间实现了委托(delegate)回调模式,但没有保留委托(delegate)。但在某些情况下,委托(delegate)会被释放。

(我的情况是我有一个 ViewController 是委托(delegate)对象,当用户按下后退按钮时将该 ViewController 从 NavigationController 堆栈中弹出)

然后回调方法获取BAD_EXE:

if (self.delegate != nil && [self.delegate respondsToSelector:selector]) {
[self.delegate performSelector:selector withObject:self withObject:returnObject];
}

我知道委托(delegate)回调模式在很多应用程序中都实现了。您对此有何解决方案?

最佳答案

通常,委托(delegate)应该始终在其 dealloc 方法中将其与其委托(delegate)对象取消关联。因此,您的 View Controller 应该检查其 dealloc 是否已设置为委托(delegate)类的委托(delegate),如果是,则将委托(delegate)属性设置为 nil

在大多数情况下,我认为这不会成为问题,因为委托(delegate)通常是委托(delegate)对象的唯一所有者。因此,当委托(delegate)被释放时,委托(delegate)对象也将被释放。毕竟,这就是委托(delegate)对象通常只保留对其委托(delegate)的弱引用的原因。

关于iphone - 处理何时回调已释放的委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720087/

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