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中可以编写收到数据后的业务逻辑,这里仅仅用打印代替。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容