如何在obj-c / ios中使用单例

时间:2012-10-30 00:42:34

标签: objective-c ios singleton

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

Game *sharedInstance = [Game sharedInstance];

在任何其他实例中的任何方法都可以做类似的事情。

[sharedInstance.myMethod]

我尝试了

Game *sharedInstance;

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

Game *sharedInstance = [Game sharedInstance];

在其他情况下,init方法,但这也没有帮助。

3 个答案:

答案 0 :(得分:3)

你的问题与单身人士无关,只是不知道如何申报和使用变量和方法。您需要获取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];

答案 1 :(得分:1)

在.m文件的Init方法中使用此

[[Game sharedInstance] method];

答案 2 :(得分:0)

  

...每次我想访问其中的方法/ var时,我都要做...

是。在使用对象之前,无论它是否是单独的共享对象,您都必须获得对象的引用。调用单例的-sharedInstance方法是一种方法。另一个选择是声明一个指向单例的全局变量,但是考虑到单例通常被用作全局变量的奇特替代品,这似乎是一个糟糕的想法。