美文网首页小知识点好东西
对Notification.Name的正确姿势

对Notification.Name的正确姿势

作者: 大兵布莱恩特 | 来源:发表于2017-08-06 13:21 被阅读87次

    自从 Swift3.0以来作者一直使用 String 来替代Notification.Name,简化了代码也回到了大家以往对于 Notification 的认识.

    func  NotificationName(name : String) -> Notification.Name {
            return Notification.Name(name)
     }
    
    使用时这样调用 
     NotificationCenter.default.addObserver(forName: NotificationName(name), object: obj, queue: queue, using: block)
    
    

    通过上边的函数可以根据传入的 String 返回一个 Notification.Name类型,虽然在一定程度上简化了代码,但是觉得还是不够优雅,于是有了下边的改进.

    对你没有看错采用面向协议的方式对 Notification.Name 进行了拓展

    typealias NotificationName = Notification.Name
    extension NotificationName : ExpressibleByStringLiteral {
        public typealias StringLiteralType = String
        public init(stringLiteral value: StringLiteralType) {
            self = Notification.Name.init(value)
        }
    }
    

    这样也可以通过一个 String 快速生成一个 Notification.Name 类型,而且在使用时不需要对 NotificationCenter 提供的函数进行任何的修改 ,你可以选择使用 Notification.Name 和 String 类型进行函数的调用

     NotificationCenter.default.post(name: NSNotification.Name("Login"), object: nil)
    
     NotificationCenter.default.post(name: "Login", object: nil)
    
    

    相关文章

      网友评论

        本文标题:对Notification.Name的正确姿势

        本文链接:https://www.haomeiwen.com/subject/ymiglxtx.html