在Objective-C中,自定义通知只是一个普通的NSString,但是在Swift 3的WWDC版本中并不明显。
您也可以为此使用协议
protocol NotificationName { var name: Notification.Name { get } } extension RawRepresentable where RawValue == String, Self: NotificationName { var name: Notification.Name { get { return Notification.Name(self.rawValue) } } }
然后将您的通知名称定义为所需的enum任何位置。例如:
enum
class MyClass { enum Notifications: String, NotificationName { case myNotification } }
并像这样使用
NotificationCenter.default.post(name: Notifications.myNotification.name, object: nil)
这样,通知名称将与基金会分离Notification.Name。而且您只需要修改协议,以防Notification.Name更改实现。
Notification.Name