我需要澄清一下我是否应该(可以?)解除分配与视图相关的 UI 元素
I need some clarification about whether I should (could?) deallocate view-related UI elements or not
所以我明白,我应该释放我拥有的对象。 (alloc/copy/retain
东西)
而且我也明白(有点?),如果我在我的一些 class 中有 @property
和 retain
,或者一些实例变量有 alloc/init , 那么我应该写一个自定义 dealloc 来确保那些被解除分配 class.
我不明白的是我应该手动释放 cell
对象吗? (因为我是在 cellForRowAtIndexPath
中用 alloc/init 创建它的?是的,我知道,tableView 在被释放时应该杀死那些单元格,但我想确定吗?
还有,我可以手动释放UILabel
、UITextField
等等吗?我确实知道当您取消分配视图时,它们会被杀死,但我还是要再次确认一下吗?
更新:
是的,感谢有关引用计数的提示,但该项目的确切目的是使用手动内存管理来做一些简单的事情。
有趣的是,现在的大多数导师都完全跳过了这一部分,所以像我这样的新手必须自己弄清楚所有这些东西。
Objective C 支持 Automatic Reference Counting,它几乎可以为您管理所有内存。我建议您将旧代码迁移到 ARC;这很简单(Xcode 对此有重构支持),它会帮你省去很多麻烦。
除非你有一个指向 UI 元素的 strong
/retain
指针,否则它们将在离开屏幕后自动释放。
关于 cell
s - 你永远不应该 dealloc
它们,因为它们旨在被重复使用。如果您 dealloc
并重新 init
它们,您将在滚动时获得 真正 糟糕的性能。
另外, said, consider using ARC(如果您还没有使用过),您的生活会轻松很多。
所以我明白,我应该释放我拥有的对象。 (alloc/copy/retain
东西)
而且我也明白(有点?),如果我在我的一些 class 中有 @property
和 retain
,或者一些实例变量有 alloc/init , 那么我应该写一个自定义 dealloc 来确保那些被解除分配 class.
我不明白的是我应该手动释放 cell
对象吗? (因为我是在 cellForRowAtIndexPath
中用 alloc/init 创建它的?是的,我知道,tableView 在被释放时应该杀死那些单元格,但我想确定吗?
还有,我可以手动释放UILabel
、UITextField
等等吗?我确实知道当您取消分配视图时,它们会被杀死,但我还是要再次确认一下吗?
更新: 是的,感谢有关引用计数的提示,但该项目的确切目的是使用手动内存管理来做一些简单的事情。 有趣的是,现在的大多数导师都完全跳过了这一部分,所以像我这样的新手必须自己弄清楚所有这些东西。
Objective C 支持 Automatic Reference Counting,它几乎可以为您管理所有内存。我建议您将旧代码迁移到 ARC;这很简单(Xcode 对此有重构支持),它会帮你省去很多麻烦。
除非你有一个指向 UI 元素的 strong
/retain
指针,否则它们将在离开屏幕后自动释放。
关于 cell
s - 你永远不应该 dealloc
它们,因为它们旨在被重复使用。如果您 dealloc
并重新 init
它们,您将在滚动时获得 真正 糟糕的性能。
另外,