美文网首页iOS Developer
iOS用闭包(Block)代替通知(NotificationCe

iOS用闭包(Block)代替通知(NotificationCe

作者: 江水东流 | 来源:发表于2017-06-30 23:15 被阅读190次

    通知在iOS中很多人用过,挺麻烦的,还耗费性能,其实就是个消息发送,没有依赖关系的模块可以消息发送,一个地方发送消息,多个地方可以接收消息,用闭包和单例就能取代通知,用下面的方法,很简单的就搞定任何地方消息发送和接收.

    • 用闭包只能一对一发送消息,最后一次给闭包赋值的地方能接收到消息,所以我们可以多建立几个闭包,发送到不同的地方.接收地方接收的代码执行过一次,并且所在控制器没有销毁,发消息时候就可以收到消息.
    • 控制器销毁时候可以在deinit方法里面用闭包=nil销毁,不销毁也费不了多少内存,没啥影响。

    建立一个消息发送工具类

    class MFSendAccecptMsgTool: NSObject {
    static let shared: MFSendAccecptMsgTool = MFSendAccecptMsgTool()
    闭包
    var sendMsgClosure1: (( _ message: String)->())?
    var sendMsgClosure2: (( _ message: String)->())?

    //消息发送
    > func sendMessage(message: String){
    sendMsgClosure1?(message)
    sendMsgClosure2?(message)
    }

    用法如下

    消息发送

    MFSendAccecptMsgTool.shared.sendMessage(message: "price.2000")

    消息接收

    • 在第一个需要接收这个消息的地方

      MFSendAccecptMsgTool.shared.sendMsgClosure1 = {(message: String) in
      print("message 111",message)
      }

    • 在第二个需要接收这个消息的地方

    MFSendAccecptMsgTool.shared.sendMsgClosure2 = {(message: String) in
    print("message 222",message)
    }

    相关文章

      网友评论

        本文标题:iOS用闭包(Block)代替通知(NotificationCe

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