我想在 Objective C 中创建一个对象,但我没有对它的引用。
是否允许通过调用[self release]让对象控制自己的生命周期?
如果您想知道我为什么需要这个:我想创建一个订阅某些通知的对象,但过了一段时间该对象不再需要并且应该消失。
那么,下面是允许的吗?
- (void) destroyMyself {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self release];
}
最佳答案
如果你在代码中看到这个,它可能是错误的。然而,在某些可以说是站得住脚的情况下,对此有合理的回应。 (因此请确保您出于正确的原因这样做。)
当您创建一个开始下载 url 的对象时,这是一个很好的例子。该对象在下载 url 时位于内存中,然后向其委托(delegate)发送一条消息,说明数据已准备就绪(或无法下载 url)。一旦发送了消息,它就会自行销毁,因为不再需要它。在这种情况下,创建“url 下载器”的代码/函数甚至可能不再存在于内存中,即,如果它是为了响应用户选择而调用的,则 View Controller 中不再显示在屏幕上的菜单项或操作.
当创建“下载”对象的代码不关心下载是否完成时,这很有用。
关于iphone - 是否允许调用 [self release] 来控制对象的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1385433/