-3

我在我的 appDelegate 中创建了一个单例(称为 sharedinstance),理想情况下我想从我的代码中的所有其他对象/实例中访问它,但是每次我想访问其中的方法/变量时,我都必须这样做

Game *sharedInstance = [Game sharedInstance];

在任何其他情况下以任何方法能够做类似的事情..

[sharedInstance.myMethod]

我试着把

Game *sharedInstance;

在另一个实例的 .h 文件中,但是当我运行代码时,Game = 0。我只是尝试将

Game *sharedInstance = [Game sharedInstance];

在其他情况下,init 方法也无济于事。

4

3 回答 3

2

您的问题与单例并没有真正的关系,只是不知道如何声明和使用变量和方法。您需要获取 Game 的实例来调用它的方法,您可以使用 [Game sharedInstance] 执行此操作。然后,您需要调用它的方法,或者将其分配给实例变量以便稍后调用方法。

即:

[[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方法是一种方法。另一种选择是声明一个指向单例的全局变量,但考虑到单例经常被用作全局变量的花哨替代品,这似乎是一个糟糕的主意。

于 2012-10-30T00:56:23.623 回答