【发布时间】:2020-04-13 22:23:19
【问题描述】:
大家好,我需要在我的 UICollectionViewCell 自定义类中添加 2 个观察者。
我是这样实现两个观察者的
override init(frame: CGRect) {
super.init(frame: frame)
NotificationCenter.default.addObserver(self, selector: #selector(disablePreviousMinutes), name: NSNotification.Name(rawValue: "NotificationIdentifier"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(enableMinute), name: NSNotification.Name(rawValue: "NotificationIdentifier2"), object: nil)
}
现在我想知道如何从我的 UICollectionViewCell 类中删除观察者
我尝试调用override func willMove(toWindow newWindow: UIWindow?),但这样所有插入的函数都会针对所有单元格重复
从UICollectionViewCell 自定义类中删除观察者的最佳方法是什么?
【问题讨论】:
-
在 deinit 中移除观察者怎么样?但如果我没记错的话,从 iOS 10 左右开始你甚至不需要移除观察者
-
只有在没有对该对象的引用处于活动状态时才调用取消初始化。在您的示例中,这可能意味着即使您的特定视图超出范围,iOS 也会在内部保留一个引用。这不一定是问题,有时这是减少未来加载时间的理想效果。如果你真的想手动移除观察者,我会选择 deinit
-
@JoRa 目前我正在阅读苹果文档,它说它是我的应用程序的目标,iOS9 或更高版本不需要删除观察者......正如你所说!那么,让观察者保持现在的状态而不移除它们会更好吗?这种方法是否适用于所有观察者?那么让观察者离开而不移除它们是一种安全的方式吗?
-
@JoRa 是的,真的!无用的搜索安全的方法来移除观察者..这样一切都快得多!
-
@JoRa 感谢您的支持!
标签: ios swift uicollectionview uicollectionviewcell nsnotificationcenter