2017-05-31 71 views
0

我目前正在使用swift和spritekit進行遊戲。我有一個名爲Utilities的課程,它有一些在遊戲中使用的泛型函數。目前我在單機遊戲場景中創建的Utilities類的新實例,然後通過引用雖然其他類像這樣快速有效地重用類

self.util = Utilities() 
self.player = Player(util: self.util) 
self.monster = Monster(util: self.util) 

我這樣做,這樣我只創建類的一個實例,但越是越多,我只想在每個課程中創​​建一個新的實用程序實例,我需要它。這是否有缺點?只創建一個實例並將其傳遞給它會更有效嗎?如果我說5或6個實例,會不會產生影響?

+0

爲什麼你需要實例化'Utilities'類?您可以將該課程級別的功能保留在該文件中,並從您想要的地方撥打電話。 –

+0

Swift不是Java。你不需要一個類來包裝泛型功能。你可以將它們作爲全局函數。 (我認爲) – hasen

回答

3

理想情況下,您不應該實例化您的實用程序類。你可以在其中編寫公共函數,並從任何你喜歡的地方調用這些方法。

如果你需要實例化你的類,並想保留一個實例,你應該去單身。你可以創建一個像

class Utilities { 
    static let sharedInstance = Utilities() 
} 

獨立的,並可以通過調用Utilities.sharedInstance

+1

Ohhhhhhhh我陷入了困境。對於swift我還是比較新的,但添加static關鍵字可以讓我使用'Utilities.whatever()',這正是我想要的。感謝您的澄清! –

+1

這裏有一篇關於這個主題的文章。 http://krakendev.io/blog/the-right-way-to-write-a-singleton – Adrian