【问题标题】:Should we remove observer in dealloc for UIView?我们应该在 UIView 的 dealloc 中删除观察者吗?
【发布时间】:2013-02-28 06:43:10
【问题描述】:
-(void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:USERBOOKMARKANDLIKEOBTAINED object:nil];
}

我的意思是,当对象即将被释放时,观察者不会删除它吗?我听说他们使用 nil 指向观察者的指针或其他东西。或者通知保持对对象的强引用,这意味着无论如何都不会调用dealloc(内存泄漏)。

那我做的对吗?

该类顺便继承自UIView。

【问题讨论】:

  • 如果问题是关于 Xcode 的,只用“xcode”标记。不是。
  • 好吧,这里有人使用没有xcode的objective-c吗?我也在问事情在标准 xcode 环境中的行为方式。不知道 gcc 或其他编译器是否以相同的方式工作并且不在乎。
  • 1.是我(我不使用 Xcode 进行编程,这很垃圾;clang 和 make 完成了这项工作,而且在设备上开发的情况下没有其他选择)。 2. 是的,编译器不知道谁给他打电话——一个 IDE、一个程序员、make 或其他任何人。因此,一般的 iOS 编程问题应该标记为“C”或“Objective-C”(取决于所使用的 API 的语言)和“cocoa-touch”。现在请阅读 'xcode' 的标签 wiki,你会在那里找到相同的建议。
  • 你在没有 xcode 的情况下使用 clang?你是做什么的?即使使用了所有人类 GUI 功能,我也很难编程。
  • 我并不感到惊讶。 “不错”的图形 IDE 令人困惑(并且经常强制执行不良的编程实践。

标签: objective-c


【解决方案1】:

我的意思是,当对象即将被销毁时,观察者不会自行删除它吗?

确实如此,如果您使用您提供的代码。否则它不会。 (通知中心怎么知道一个对象被释放了?)

【讨论】:

  • 那么当一个对象被释放时,它不会到处发送通知?
  • @JimThio 不,魔法和奇迹还没有在 Objective-C 运行时中实现(可能在 3.0 中:P)
  • 我想我会在此之前删除通知。
  • 现在我只添加关于缺乏魔法和奇迹的错误报告
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多