Objective-C单例对象和全局变量

时间:2011-03-27 09:57:04

标签: iphone objective-c ipad class singleton

我知道关于这个话题的其他帖子,但我只是一个人从一个菜鸟上升,所以需要更多的帮助。

我的iPhone应用程序有几个全局变量 - 有些我已经在类中声明并给出了值,但是其他需要在登录过程中设置(例如令牌),然后需要在应用程序的生命周期中访问来自任何类别或方法。我被告知我应该使用Singleton对象来实现所有这些,我认为这是一个在启动时实例化的类。如果是这样,有人可以给我这样的标题和实现文件的最简单的例子以及我应该如何/在哪里实例化它?那么我需要有一些从off设置的字符串和其他可以在以后设置/获取的字符串?

非常感谢提前。另外,我是新来的,所以如果我的礼仪以任何方式结束,请告诉我。

谢谢,

2 个答案:

答案 0 :(得分:4)

此链接显示了一些用于创建单例类的代码:http://www.galloway.me.uk/tutorials/singleton-classes/

你可以使用它:

[[MyManager sharedManager] doSomething];

对sharedManager的调用将获得该类的一个实例(或者,如果这是您第一次调用它,则会创建它) - 这可以确保您只有一个实例:)

它还会覆盖release,retain,autorelease等,以确保您不会意外地错误地摆脱sharedManager!

这个类会在你第一次使用它时自我实例化,但如果你需要在启动时创建它,只需调用[MyManager sharedManager]它就会为你创建它。

您可以像任何其他objective-c类一样定义类 - 只需添加属性等

希望有所帮助:)

答案 1 :(得分:3)

全局变量并不好,但当单身用于提供对某些数据的全局访问时,单例并不是更好。关于全局变量,你可以说任何不好的事情,你也可以说一个用于全局访问的单例。更好的解决方案是创建数据模型并将该模型从一个视图控制器传递到下一个视图控制器。

以下a previous SO question可能有所帮助。