1
使用單我有一個單例類:騎自行車在斯威夫特
class SomeManager {
static let sharedInstance = SomeManager()
let serverService = SomerServerService()
let musicService = SomeMusicService()
}
我嘗試使用
class SomeMusicService
{
let serverService = SomeManager.sharedInstance.serverService //here seems I get cycle.
}
我應該用偷懶或其他一些初始化。
正如你可以看到let musicService = SomeMusicService()
初始化一個對象,然後在同一個對象SomeMusicService
它試圖調用SomeManager
單身的sharedInstance
在開始獲得其他服務。
所以這是一個完整的清單:
import Foundation
class ServerService
{
func downloadMusic()
{
print("Download music and play it after that.")
}
}
class MusicService
{
let serverService = Singleton.shared.serverService
func playMusic()
{
serverService.downloadMusic()
}
}
class Singleton
{
static let shared = Singleton()
let serverService = ServerService()
let musicService = MusicService()
}
let s = Singleton.shared
print("Hello, World!")
我們永遠也不會被調用print("Hello, World!")
線。
酷得到它,似乎在我的情況下單身還沒有被初始化,但我嘗試在同一時間使用它。我認爲只有懶惰的選擇,但似乎你是正確的計算屬性也沒關係。 –
我的意思是懶惰是SomeManager單身已經創建的保證,我們可以使用一些屬性。還有一個問題,你認爲這是保留週期問題?也許我以錯誤的方式提問。似乎我開始在另一個服務中使用同一個服務,但我在一個單例中初始化所有服務。 –
我更新了一個列表的問題。無法理解我們從哪裏開始騎車,因爲我是從Objective-C世界=) –