swift單例中使用閉包

在看oc項(xiàng)目時(shí)候,不理解websocket是如何在一個(gè)控制器中寫邏輯,然后其他的控制器都收到,原來是在一個(gè)單例中使用了block,在其中一個(gè)控制器中制定收到websocket后的block邏輯,然后每次收到服務(wù)器發(fā)來的內(nèi)容就可以回調(diào)執(zhí)行這個(gè)block了。我們用swift來模擬這種模式。
首先,在單例中添加閉包屬性,不清楚閉包的可以搜一下,與oc中的block類似。

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

然后,在這個(gè)單例類中添加各個(gè)閉包的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)
    }
}

最后將自定義的閉包作為一個(gè)參數(shù)傳遞給setter就可以設(shè)定好myClosures屬性,調(diào)用getter就可以使用:

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

在需要的地方調(diào)用getter即可

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

總結(jié):這里的getter可以寫在websocket的委托中,例如當(dāng)接收到websocket發(fā)來的消息時(shí)候執(zhí)行這個(gè)閉包,同樣setter中可以編寫收到數(shù)據(jù)后的業(yè)務(wù)邏輯,這里僅僅用打印代替。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容