gpt4 book ai didi

swift - NS Notification Observer 未被删除

转载 作者:行者123 更新时间:2023-11-28 12:09:08 24 4
gpt4 key购买 nike

我正在努力检测我的应用程序中的屏幕截图,这是问题所在..

override func viewDidAppear(_ animated: Bool) {

let mainQueue = OperationQueue.main
NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationUserDidTakeScreenshot,
object: nil,
queue: mainQueue) { notification in
print("SCREENSHOT TAKEN")

}

}
override func viewDidDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self)
}

观察者工作正常,但它不会删除观察者,然后我可以获得大量的重复听众。我试图理解文档,但我不明白:/

谢谢!

最佳答案

不要在 viewDidAppear 中添加观察者。在 viewDidLoad 中执行。 viewDidAppear 可能被多次调用,这意味着您可能会多次注册 UIApplicationUserDidTakeScreenshot 通知。

此外,您不需要在 iOS9+ 中注销 (removeObserver)。如果您运行的 iOS 版本低于 9,我建议您在 deinit 而不是 viewDidDisappear 中注销。

override func viewDidLoad() {
super.viewDidLoad()

let mainQueue = OperationQueue.main
NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationUserDidTakeScreenshot,
object: nil,
queue: mainQueue) { notification in
print("SCREENSHOT TAKEN")
}
}

关于swift - NS Notification Observer 未被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48878229/

24 4 0
文章推荐: ios- ScrollView 中的所有页面未加载自定义uiview
文章推荐: javascript - 我如何向其中添加选择器更改事件?
文章推荐: javascript - 将 jQuery 与