swift单例中使用闭包

在看oc项目时候,不理解websocket是如何在一个控制器中写逻辑,然后其他的控制器都收到,原来是在一个单例中使用了block,在其中一个控制器中制定收到websocket后的block逻辑,然后每次收到服务器发来的内容就可以回调执行这个block了。我们用swift来模拟这种模式。
首先,在单例中添加闭包属性,不清楚闭包的可以搜一下,与oc中的block类似。

var myClosures:((String)->Void)!

然后,在这个单例类中添加各个闭包的getter和setter方法:

//MARK:- setter getter
func setMyClo(sample Closures : @escaping ((String) -> Void)) {
    self.myClosures = Closures
}

func getMyClo(str: String)  {
    if self.myClosures != nil{
        self.myClosures(str)
    }
}

最后将自定义的闭包作为一个参数传递给setter就可以设定好myClosures属性,调用getter就可以使用:

YxhClass.shareSingle().setMyClo { (a) in
            print(a)
        }

在需要的地方调用getter即可

 YxhClass.shareSingle().getMyClo(str: "hello")

总结:这里的getter可以写在websocket的委托中,例如当接收到websocket发来的消息时候执行这个闭包,同样setter中可以编写收到数据后的业务逻辑,这里仅仅用打印代替。

你可能感兴趣的:(swift单例中使用闭包)