gpt4 book ai didi

cocoa - NSManagedObject 子类的问题

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

嘿伙计们,我有一个 NSManagedObject 的子类。在 awakeFromInsert 和 awakeFromFetch 中,我调用一个初始化方法,该方法除其他外还启动一个 NSTimer。

现在我需要一个地方来使计时器无效。但是,dealloc、finalize、didTurnIntoFault、prepareForDeletion 和 willTurnIntoFault 不会被调用。

根据文档,当对象从内存中清除时,这些方法都应该被调用。它们都不是,但是所有数据都保存在持久存储中。我很困惑为什么或如何。

我可以做的事情是否会导致这些方法在对象生命周期期间不被调用?

最佳答案

核心数据控制 NSManagedObject 的生命周期。除非您要求,否则它不会自行从内存中刷新对象。看着documentation ,似乎有两种方法:

  1. 向 MOC 发送 refresh:mergeChanges: 会导致对象发生故障。
  2. 向 MOC 发送 reset 会导致其自行重置,就像刚刚创建一样。

但是,上述任何操作都需要您执行显式操作,因此您不妨向对象添加一个方法以使其计时器无效并调用该方法。

事实上,您的问题可能表明存在设计问题。 NSTimer 本质上是一个用户界面事件。它可能应该由 MVC Controller 控制,该 Controller 向模型对象(NSManagedObject)发送消息以执行操作。

关于cocoa - NSManagedObject 子类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4482336/

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