为什么我不能使用 addObserverForName 观察 NSApplicationXYZNotification?
Why can't I observe NSApplicationXYZNotification with addObserverForName?
我正在尝试使 Objective-C iOS 库适用于 macOS 应用程序。移除基于 UIKit 的通知是这里唯一真正的任务。例如,当我试图用 NSApplicationDidResignActiveNotification
替换 UIApplicationDidEnterBackgroundNotification
时,我 运行 进入了奇怪的错误,即后一个变量被称为未声明的标识符。
[self.observers addObject: [[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationDidResignActiveNotification object:nil queue:nil usingBlock:^(NSNotification* note) {
// stop operations
}]];
当我使用替代方法时不会出现相同的错误:
[[NSNotificationCenter defaultCenter] addObserver:[???] selector:[some selector] name:NSApplicationDidResignActiveNotification object:nil];
这种方法的问题是我必须事先有一个观察者——比如 self
——而不是接收一个我可以添加到 self.observers
数组的观察者。
我已经阅读了一些文档、问题和指南——包括 NSApplication doc and the NSHipster guide——但我似乎无法弄清楚我的误解,尽管我相信这是关于 NSNotificationCenter 的一些基本知识以及如何它有效。
愚蠢的解决方案,尽管 @Willeke 的评论提供了帮助,他们没有看到相同代码片段的错误——库需要 Cocoa.h 代替 iOS 导入。
我正在尝试使 Objective-C iOS 库适用于 macOS 应用程序。移除基于 UIKit 的通知是这里唯一真正的任务。例如,当我试图用 NSApplicationDidResignActiveNotification
替换 UIApplicationDidEnterBackgroundNotification
时,我 运行 进入了奇怪的错误,即后一个变量被称为未声明的标识符。
[self.observers addObject: [[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationDidResignActiveNotification object:nil queue:nil usingBlock:^(NSNotification* note) {
// stop operations
}]];
当我使用替代方法时不会出现相同的错误:
[[NSNotificationCenter defaultCenter] addObserver:[???] selector:[some selector] name:NSApplicationDidResignActiveNotification object:nil];
这种方法的问题是我必须事先有一个观察者——比如 self
——而不是接收一个我可以添加到 self.observers
数组的观察者。
我已经阅读了一些文档、问题和指南——包括 NSApplication doc and the NSHipster guide——但我似乎无法弄清楚我的误解,尽管我相信这是关于 NSNotificationCenter 的一些基本知识以及如何它有效。
愚蠢的解决方案,尽管 @Willeke 的评论提供了帮助,他们没有看到相同代码片段的错误——库需要 Cocoa.h 代替 iOS 导入。