【发布时间】:2010-11-25 20:41:45
【问题描述】:
如果我有一个想要重用的自定义视图控制器类,但在一个实例中使用时有一个在视图生命周期中实际未使用的保留属性,我是否需要在 dealloc 中释放它?
【问题讨论】:
标签: objective-c properties release retain
如果我有一个想要重用的自定义视图控制器类,但在一个实例中使用时有一个在视图生命周期中实际未使用的保留属性,我是否需要在 dealloc 中释放它?
【问题讨论】:
标签: objective-c properties release retain
您应该释放在 dealloc 中分配或保留的所有对象。
如果它在界面生成器中被引用,您还需要在视图控制器的 viewDidUnload() 中释放并设置为 nil,并在您的 dealloc 中释放。
【讨论】:
向 nil 发送消息是可以的,所以无论如何你都应该在 dealloc 中释放你的保留属性。如果该属性没有被使用,它将是 nil 并且向它发送释放实际上是一个空操作。
【讨论】:
nil 被记录为能够接收消息。它除了返回 0/nil 什么都不做。
您无需对保留的属性调用 release。 setter 方法的实现使得给它一个空值将为您释放它。在您的 dealloc 方法中,只需将其设置为 nil:
self.someProperty = nil;
【讨论】:
someProperty,它将在对象的dealloc 期间收到更改通知,其中状态几乎可以保证未定义。