iPhone - dealloc - Release vs. nil

标签 iphone memory memory-management release-management dealloc

想知道有经验的人是否可以对此进行更多解释。我见过……的例子

  [view release];

  view = nil;  

....在(void)dealloc中。

有什么区别,一个比另一个好? 最好的方法是什么?

在进行 retainCount 测试时,我个人看到 nil 将计数从 3 降至 0,但 release 仅将其从 3 降至 2。

最佳答案

你看到的大概是这些:

1) [foo release];
2) self.bar = nil;
3) baz = nil;
  1. 正在释放对象,通过实例变量foo访问它。实例变量将成为一个悬空指针。这是dealloc中的首选方法。

  2. 正在将 nil 分配给 self 上的属性 bar,这实际上将释放该属性当前保留的任何内容。如果您有属性的自定义 setter ,请执行此操作,它应该清理的不仅仅是支持属性的实例变量。

  3. 将用 nil 覆盖引用对象的指针 baz,但不会释放该对象。结果是内存泄漏。永远不要这样做。

关于iPhone - dealloc - Release vs. nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458178/

相关文章:

iphone - BackgroundView 不适应 Grouped UITableView 中的圆角

c++ - 成员函数内的内存释放

c - malloc 返回内存或虚拟地址空间

c++ - C++ 测试示例中可能存在的逻辑缺陷

iOS 应用程序在 iPhone 上崩溃,即使它在模拟器上运行

iphone - Storyboard自动布局 : "trailing space to container" vs "bottom space to bottom layout"

iphone - 如何修复 Cocoa 错误 513?

c - 为结构中的变量分配内存的最佳方法是什么?

java - 优化 Java 中字符串集合的内存使用

performance - 虚拟内存在当今廉价 RAM 的世界中仍然重要吗?