我NSNotificationCenter
的当前通知名称是常量,在全局可访问的单例中定义:
let notificationLeafletImageLongPressed = "com.mycompany.notificationLeafletImageLongPressed"
let notificationLeafletPageChanged = "com.mycompany.notificationLeafletPageChanged"
我想要做的是将其更改为:
enum NotificationKey: String {
case LeafletImageLongPressed
case LeafletPageChanged
}
// Access
print(NotificationKey.LeafletImageLongPressed.rawValue)
通过这种方式,我让编译器检查所有名称是否真的不同。
我现在有三个问题:
1)据我所知,通过App Store在设备上更新应用程序总是导致终止(因此重新启动)应用程序。对?
2)因此,应该保存以在更新之间更改NSNotificationCenter
的通知名称。正确?
3)目前,名称是以反向dns样式(com.mycompany.notificationName
)定义的,但之后它们只是notificationName
。如果这一般可以吗?或者它应该总是反向dns风格? (然后我无法将其更改为枚举)
提前致谢。
答案 0 :(得分:3)
1)是的,更新后,应用程序重新启动。
2)是的,它会保存对通知名称的更改,因为更改是在代码中而不是在某个持久容器中(Keychain,UserDefaults等)。
3)' notificationName' 看起来比' com.mycompany.notificationName' 好多了。虽然Apple在编码指南中建议使用更详细的名称。
通知由名称为的全局NSString对象标识 以这种方式组成:
[关联类的名称] + [Did |将] + [UniquePartOfName] + 通知例如:
则NSApplicationDidBecomeActiveNotification NSWindowDidMiniaturizeNotification NSTextViewDidChangeSelectionNotification NSColorPanelColorDidChangeNotification