swift - 为 NSNotificationCenter = Swift deinit() 调用 .removeObserver 的正确位置?

标签 swift nsnotificationcenter viewdidunload

我已经阅读了很多有关为 NSNotificationCenter 调用 .removeObserver 的正确位置的建议,因为 viewDidUnload 不是一个选项。

我只是想知道 Swift 中新的 deinit() 是否是一个不错的选择?

-尼克

最佳答案

这实际上取决于您订阅 NSNotificationCenter 通知的类的角色。如果您订阅:

界面 View

那么您应该在 View 对用户不可见时立即取消订阅。在用户看不到 View 时节省 CPU 周期并且不消耗资源。

UIViewController

这里它还取决于您将要执行的响应通知的操作类型。如果只是 UI 调整,您应该在 View Controller 从屏幕上消失后立即取消订阅。

您的应用服务层

这里可以在 deinit() 中包含 .removeObserver。但是即使在这里,我也倾向于建议您更明确地说明何时订阅和取消订阅 NSNotificationCenter 通知,并将它们放在服务的启动和停止方法中。

关于swift - 为 NSNotificationCenter = Swift deinit() 调用 .removeObserver 的正确位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069480/

相关文章:

ios - NSNotificationCenter 观察者不工作

ios - 在 viewDidLoad 中注册通知

ios - UIscrollView 中的 viewControllers 没有调用 ViewDidUnload

ios - 使用 NavigationController 时 View 的内存管理

swift - Alamofire.swift completionHandler 调用中参数 #2 缺少参数

ios - 折线图数据到条形图数据

swift - 如何在 Swift 中通过命令行读取一行?

ios - NSNotification 没有调用@selector 方法

iphone - 在 viewDidUnload 中释放有什么区别吗?

ios - 如何从快速字典数组中获取所选键数组的值及其复杂性