2017-05-31 3 views
0

私は現在、swiftとspritekitを使用しているゲームに取り組んでいます。私はUtilitiesと呼ばれるクラスを持っています。このクラスには、ゲームの周りで使用される汎用関数がたくさんあります。現在、私は私の単一のゲームシーンでUtilitiesクラスの新しいインスタンスを作成し、私はクラスの1つのインスタンスを作成するように私はこれをやっているので、swiftを効率的に再利用するクラス

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

のような他のクラスにかかわらず、参照を渡し、しかし、より多くのことを進めればするほど、必要な各クラスのユーティリティの新しいインスタンスを作成したいだけです。これには欠点はありますか? 1つのインスタンスを作成して渡す方が効率的ですか、それとも5つまたは6つのインスタンスがあると違いはありませんか?

+0

なぜあなたは 'Utilities'クラスをインスタンス化する必要がありますか?あなたはそのファイルにクラスレベルの機能を保持し、あなたが望む場所から呼び出すことができます。 –

+0

SwiftはJavaではありません。ジェネリック機能をラップするためのクラスは必要ありません。それらをグローバル関数として持つことができます。 (私は思う) – hasen

答えて

3

理想的には、Utilitiesクラスのインスタンスを作成する必要はありません。パブリック関数を記述し、好きな場所からそれらのメソッドを呼び出すことができます。

クラスをインスタンス化して1つのインスタンスを保持する必要がある場合は、シングルトンを使用する必要があります。あなたは

class Utilities { 
    static let sharedInstance = Utilities() 
} 

のようなシングルトンを作成することができますし、Utilitiesインスタンスが、あなたはおそらくすべてでクラスを必要としない、任意の特定の状態を保持していない場合はUtilities.sharedInstance

+1

Ohhhhhhhh i gotcha。私はまだかなり早い段階で新しいですが、staticキーワードを追加すると、私が望むものであるUtilities.whatever()を使用できます。解明してくれてありがとう! –

+1

ここには、このトピックについて詳しく説明する記事があります。 http://krakendev.io/blog/the-right-way-to-write-a-singleton – Adrian

関連する問題