如何在SwiftUI中打印来自NotificationCenter的所有通知



对于常规调试,我认为找出NotificationCenter发布的所有通知并将其打印到控制台会非常有用。我找不到关于这方面的帖子,所以我想分享一下我是如何做到这一点的。

@main
struct MyApp: App {
let notes = NotificationObserver()
var body: some Scene {
WindowGroup {
Text("Hello, world!")
}
}
}

class NotificationObserver {
init() {
NotificationCenter.default.addObserver(
self,
selector: #selector(printAllNotifications),
name: nil,
object: nil)
}
@objc func printAllNotifications(_ note: Notification) {
guard note.name != UIScreen.brightnessDidChangeNotification else { return }
print(note.name)
}
}

从本质上讲,addObserver(_:selector:name:object:)的名称参数是optional,传递nil作为参数意味着观察到所有通知。

我们提供给选择器参数的函数需要在运行时访问Objective-C,所以我们用@objc标记它。由于@objc只能与类的成员一起使用,我们将此代码封装在NotificationObserver类中。

现在,我们所需要做的就是在应用程序的入口点创建一个NotificationObserver的实例,并将所有通知打印到控制台(在这里,我们排除了brightnessDidChangeNotification,因为这似乎会污染控制台,并且可能不是您在使用时想要的(。

相关内容

  • 没有找到相关文章

最新更新