2011-07-15 4 views
1

私はいくつかのカードゲーム用の電卓を作成しています。そのゲームでは、私はゲームを管理するシングルトンクラスを作成しています。スコアを保持し、ゲームの場所などを把握します。シングルトンクラスで 'Player'オブジェクトを作成する

アプリが起動したら、4人のプレイヤーの名前を入力するように求めます。その後、4人のプレイヤーオブジェクトがその名前に従ってインスタンス化されます。私はすでに「Player」というオブジェクトを持っているので、4人のプレイヤーが名前でインスタンシエートされ、スコア0から始まります。

今、これらのプレーヤーをシングルトンクラスに保存する必要があります。したがって、私はクラス内に4つのPlayerプロパティを作成しました。

// set properties hereがある
if ((self = [super init])) { 
    // set properties here 
} 

、私は何を書くのです。しかし、私の質問はで、シングルトンクラスのinit法の下で、ありますか?そこのPlayersプロパティで何かする必要がありますか?

は、

答えて

0

をありがとう、私はおそらくnilにそれらを設定するだろうがありません、あなたは、彼らと何もする必要はありません。

+0

私はそれらのプレイヤーを合成したので、他のクラスでは私のようなことができます:mySingletonClass.player1 = player1 true? – darksky

+0

できます。構文は '[SingletonClass sharedInstance] .player1 = player1'のようになります。もちろん、他のクラスの変数を解放してメモリリークを防ぐことを忘れないでください。 – FreeAsInBeer

1

共有インスタンスを返す以外は何もする必要はありません。通常、シングルトンのプロパティは、それをインスタンス化するクラスに設定されます。

0

多分私は間違っていますが、AppDelegateは既にシングルトンとして機能していませんか?

+1

うーん..私はあなたがそれを言うことができると思います。しかし、AppDelegateに管理したいものを管理させるのは悪い設計です。 – darksky

+1

ここでNayefcに同意します。多くの新しいiOSプログラマは、App Delegateにいくつかの異なるクラスにあるべきコードを実行させました。通常は、各クラスには、すべてを処理するAbominationクラスを作成するのではなく、独自の関数があるという考えに固執するのがよいでしょう。コードを論理的に分離することにより、どのクラスがどのコードを実行しているかを理解しやすくなり、保守が容易になり、変更が容易になります。 – FreeAsInBeer

+0

ありがとうございました@FreeAsInBeer詳細をお寄せいただきありがとうございます。さらに、Cocoa TouchはMVCとオブジェクト指向プログラミングに大いに依存しています。ゲームを追跡し、それを管理する別のクラスが、最良の方法です。 – darksky

関連する問題