2012-10-26 54 views
0

我目前正在開發一個iOS應用程序,它需要使用Socket連接與硬件設備進行通信。 因此,我正在使用NSStream的Singleton對象。到目前爲止,所有工作都按預期進行銷燬和重建Singleton iOS

問題是,如果連接終止,或中斷不可能重新打開它(這是在文檔中說明)。 所以我的想法是摧毀Singleton並重新創建它。這不應該干擾Singleton模式,因爲它聲明只存在這樣一個類的一個副本。

有沒有人有一個想法如何解決這個問題?任何其他解決方案不涉及娛樂的單身人士將不勝感激。

+5

你爲什麼使用單身?您需要銷燬並重新創建單例的事實強烈表明您不應該使用單例。 – mttrb

+0

爲什麼不嘗試在設備上使用'plist'文件並在需要時更新它? –

回答

2

爲什麼不在你的單例類中加入一些邏輯來測試與設備的連接是否處於活動狀態。如果它已經死亡,請關閉連接並打開一個新連接。這與通過銷燬重新創建單例實現的效果完全相同,但不會像過多地濫用單例模式。它也應該更簡單,因爲只有單身人士知道連接,並且因此保持低耦合。

2

單身並不會被破壞,可能你應該包括重新打開單身人士課程和關閉/重置舊連接的方法。

0

Singleton的核心可以讓你創建一個變量一次,只有這意味着它將一直沿着你的應用程序直到終止。我們將它初始化爲延遲加載,意味着它被使用時,然後將其初始化。它將在RAM中分配爲靜態,因此我們可以隨時調用它以重用,這確實節省了時間。所以不能破壞Singleton,只是在它裏面做一些邏輯。

希望得到這個幫助。