gpt4 book ai didi

objective-c - 使用 NSOperation 处理目标/ Action 弱引用

转载 作者:行者123 更新时间:2023-11-29 13:48:22 26 4
gpt4 key购买 nike

我正在使用 NSOperation 来处理 iOS 应用程序中的后台处理,并且我正在尝试了解目标/操作模式。在委托(delegate)模式中,委托(delegate)作为弱引用持有,委托(delegate)对象负责在它dealloc之前将其他对象的委托(delegate)字段设置为nil。在目标/行动模式中,据我所知,出于类似的原因,目标被视为弱引用。但是,当目标对象 dealloc 并且 NSOperation 存在时,“nil”目标字段似乎并不容易当它的目标被解除分配时,该操作有可能仍然坐在队列中。

在这种情况下应该如何处理内存管理(NSOperation 执行后台处理,然后使用 target/action 将值返回给 NSOperation 的创建者) ?

最佳答案

The Target 中所述, 如果控件可能发送操作,则由您确保目标可用。实际上,这不是问题,因为目标通常是在控件之前创建并在控件之后释放的 Controller 。

如果您从操作发送操作消息,则需要确保在操作完成之前不会释放目标。一种方法可能是让目标保留自身直到操作完成。

另一种方法可能是使用操作和目标都知道的中间对象。该操作可以将中间对象视为目标的代理,并将操作发送给它而不是直接将其发送给目标,并且如果它被释放,目标可以适本地更新中间对象。目标和操作都可以在不创建保留循环的情况下保留中间体。我不确定这种方法是否是我的首选——似乎有点过于复杂——但它可能会有所帮助。

关于objective-c - 使用 NSOperation 处理目标/ Action 弱引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6194649/

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