|
|
1
3
除了使用自动释放池,这些是我唯一见过的。我不会 太 小心自动释放。它们工作得很好,在这种情况下,您可能看不到任何性能差异。 然而,如果你真的想避免这种情况,这里的最佳实践似乎是“最不令人惊讶的原则”。因为第一个习语在大多数示例代码中都有,所以似乎您应该为了维护代码的人而把多余的行占用掉。 |
|
|
2
2
不管您是否使用它们,默认情况下,自动释放池已经包围了您的代码。我个人认为,如果不使用自动释放的对象,您不会获得更好的性能。请记住,自动释放池和垃圾收集是两个不同的概念,前者要简单得多。唯一不想使用自动释放对象的地方是在大循环中。 根据记录,第二种模式也应该可以正常工作。 |
|
|
3
1
自动释放池不应该使用更多的内存,除非您正在紧密循环中创建大量对象。 我想你的选择要么是使用你需要编写的2行或3行代码,要么只是使用自动释放池。 我个人肯定会使用自动释放池,除非遇到特定的性能或内存问题。 |
|
|
4
1
对于许多对象,可以直接使用返回自动释放实例的方法。作为一个例子,我通常编写与您的代码片段等效的代码段,如下所示: thing.number=[nsnumber numberWithint:1]; 请注意,由于您的属性保留了NSnumber,因此在您处理完该属性后,您需要稍后释放它。 无论如何,如果这不适用,因为没有构造函数返回自动释放的对象,那么模式1肯定是正确的。 相反,模式2在我看来是不正确的,原因如下:首先将nsnumber分配给您的属性,然后释放您的属性。但是,您需要释放已分配的nsnumber,而不是由您的属性保留的nsnumber(稍后您将执行此操作,在完成该属性后再次执行此操作)。模式2的净效果应该是内存泄漏(分配的nsnumber没有释放),而您的属性不包含nsnumber(因为您首先保留它,然后释放它)。 |
|
|
Danil · 种子/填充核心数据的最佳实践?[关闭] 1 年前 |
|
|
Vincent · SwiftUI与表单中的CoreData绑定 2 年前 |
|
|
user13990880 · 需要在核心数据中保存打乱的顺序 2 年前 |