gpt4 book ai didi

swift - removeObserver() 是否移除所有观察者?

转载 作者:IT王子 更新时间:2023-10-29 05:16:45 32 4
gpt4 key购买 nike

以下是否删除了所有按名称添加的 NSNotificationCenter.defaultCenter View ?

NotificationCenter.default.removeObserver(self)

如果我在 viewDidLoad() 的同一 View 中有以下内容,它们会被上面的单行删除吗?

NotificationCenter.default.addObserver(self, selector: Selector(("method1")), name: UITextField.textDidChangeNotification, object: nil)

NotificationCenter.default.addObserver(self, selector: Selector(("method2")), name: UITextView.textDidChangeNotification, object: nil)

最佳答案

是的,removeObserver(self) 调用将删除您使用 addObserver:selector:name:object: 添加的所有观察者,观察者为 self,无论您指定的通知名称、对象或选择器。

在对象的 deinit 方法以外的任何地方使用 removeObserver(self) 方法都是一个坏主意,因为某些系统类(或您定义的对象的子类)可能已经添加了观察者,您不知道。该方法调用是一个“焦土”调用,从对象中移除所有观察者。

相反,您应该调用 removeObserver:name:object: 并仅删除您添加的观察者。

关于swift - removeObserver() 是否移除所有观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761962/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com