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