iphone - 是否允许调用 [self release] 来控制对象的生命周期?

标签 iphone objective-c

我想在 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/

相关文章:

iphone - CoreText 渲染文本故障

iphone - NSPredicate by NSManagedObject 用于多对一查找

iphone - 具有相同代码库的两个 iPhone 应用程序

iphone - 如何显示最初从 plist iphone 中隐藏的状态栏

ios - 使 block 与屏幕边界碰撞

iphone - 单击另一个单元格时,将UITableViewCell折叠为原始大小

iphone - 如何使 UITableViewCell 上的滑动删除按钮变小?

iphone - 如何在 iOS 5.0.1 中打开 Dock 连接器的串行端口

ios - 将参数传递给选择器操作

ios - iOS 9 中的 AVAudioRecorder 不工作