在任何地方保留任何托管对象是一个坏主意,这是真的吗?

Posted

技术标签:

【中文标题】在任何地方保留任何托管对象是一个坏主意,这是真的吗?【英文标题】:Is it true that it's a bad idea to retain any managed object, anywhere? 【发布时间】:2010-06-13 11:05:27 【问题描述】:

因为:Core Data 拥有生命周期,它可以在今天或明天的任何时间将它们变成故障。并且可能它不会太在意retainCount。所以我很好奇是否保留托管对象

1) 有意义

2) 或 如何 它是坏的,以及 为什么 它是坏的

【问题讨论】:

【参考方案1】:

保留并不会真正伤害对象,并且您不会搞砸对象的生命周期,因为 Core Data 会很乐意从您的手下对它进行故障排除。

如果您挂在 Core Data 正在删除的对象上,那么风险和坏处就是。从您的应用程序的角度来看,它已经变成了一个没什么大不了的故障。然而,下次你去触摸那个对象时,Core Data 会尝试去实现它(将它的属性等拉回内存),你会得到一个错误并让你的应用程序崩溃。

因此,保留 NSManagedObject 的行为不会导致问题,但挂在被删除的 NSManagedObject 的引用(通过分配或保留)是一件坏事。

【讨论】:

以上是关于在任何地方保留任何托管对象是一个坏主意,这是真的吗?的主要内容,如果未能解决你的问题,请参考以下文章

几乎在任何地方都可以使用 async/await 吗?

这个程序不会在任何地方打印系统日志吗?

TFVC变更集 - 变更集评论的历史 - 在任何地方?

如何在任何地方使用 Vim 编辑器输入文本

在任何地方的 maximo 中获取数组 indexoutofbound 异常

如何在任何地方的代码中禁用无干扰模式