-3

appDelegateでシングルトン(sharedinstanceと呼ばれる)を作成しました。理想的には、コード内の他のすべてのオブジェクト/インスタンスからアクセスしたいのですが、メソッド/ varにアクセスするたびに、次のことを行う必要があります。

Game *sharedInstance = [Game sharedInstance];

他のどのような方法でも、次のようなことができるようになります。

[sharedInstance.myMethod]

入れてみました

Game *sharedInstance;

他のインスタンスの.hファイルにありますが、コードを実行すると、Game=0です。

Game *sharedInstance = [Game sharedInstance];

他の例ではinitメソッドですが、それも役に立ちません。

4

3 に答える 3

2

あなたの問題は実際にはシングルトンに関係していません、それは変数とメソッドを宣言して使用する方法を知らないという問題です。Gameのインスタンスを取得してメソッドを呼び出す必要があります。これは、[GamesharedInstance]を使用して行います。次に、そのメソッドを呼び出すか、後でメソッドを呼び出すためにインスタンス変数に割り当てる必要があります。

つまり、次のいずれかです。

[[Game sharedInstance] method]

また

(in the .h)
Game *sharedInstance

(in the init method in your .m)
sharedInstance = [Game sharedInstance];

(elsewhere in your .m)
[sharedInstance method];
于 2012-10-30T00:47:08.783 に答える
1

.mファイルのInitメソッドでこれを使用します

[[Game sharedInstance] method];
于 2012-10-30T06:51:32.180 に答える
0

...その中のメソッド/変数にアクセスしたいときはいつでも、私はしなければなりません...

はい。オブジェクトを使用する前に、それがシングルトンのような共有オブジェクトであるかどうかに関係なく、オブジェクトへの参照を取得する必要があります。シングルトンの-sharedInstanceメソッドを呼び出すことは、それを行う1つの方法です。別のオプションは、シングルトンを指すグローバル変数を宣言することですが、シングルトンは、悪い考えのように思われるグローバル変数の派手な代替としてよく使用されることを考えると。

于 2012-10-30T00:56:23.623 に答える