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

Iphone Objective-C单例对象和全局变量,iphone,objective-c,ipad,class,singleton,Iphone,Objective C,Ipad,Class,Singleton,我知道有其他关于这个话题的帖子,但我只是一个真正的从noob爬上去的人,所以我需要更多的帮助 我的iPhone应用程序有几个全局变量——有些是我在一个类中声明和给定的值,有些则需要在登录过程中设置,例如令牌,然后需要在应用程序的生命周期中从任何类或方法访问这些变量。我被告知,我真的应该为所有这些使用一个单例对象,我认为这是一个在启动时实例化的类。如果是这样的话,有人能给我一个这样的头文件和实现文件的最简单的例子,以及我应该如何/在哪里实例化它吗?然后我需要一些字符串,这些字符串是从off开始设置

我知道有其他关于这个话题的帖子,但我只是一个真正的从noob爬上去的人,所以我需要更多的帮助

我的iPhone应用程序有几个全局变量——有些是我在一个类中声明和给定的值,有些则需要在登录过程中设置,例如令牌,然后需要在应用程序的生命周期中从任何类或方法访问这些变量。我被告知,我真的应该为所有这些使用一个单例对象,我认为这是一个在启动时实例化的类。如果是这样的话,有人能给我一个这样的头文件和实现文件的最简单的例子,以及我应该如何/在哪里实例化它吗?然后我需要一些字符串,这些字符串是从off开始设置的,其他的可以在以后设置/获取

非常感谢。另外,我是新来的,所以如果我的礼仪有任何问题,请告诉我


谢谢,

此链接显示了一些创建singleton类的代码:

您可以使用类似于:

[[MyManager sharedManager] doSomething];
对sharedManager的调用将获得该类的一个实例,或者,如果这是您第一次调用它,将创建它-这将确保您只有一个实例:

它还覆盖发布、保留、自动释放等,以确保您不会意外地错误地摆脱sharedManager

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

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


希望对您有所帮助:

此链接显示了一些创建singleton类的代码:

您可以使用类似于:

[[MyManager sharedManager] doSomething];
对sharedManager的调用将获得该类的一个实例,或者,如果这是您第一次调用它,将创建它-这将确保您只有一个实例:

它还覆盖发布、保留、自动释放等,以确保您不会意外地错误地摆脱sharedManager

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

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


希望这能有所帮助:

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


这可能会有所帮助。

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


这可能会有所帮助。

对于单机版,您只想使用Matt Gallagher的代码,基本上每个iOS应用程序都会使用这些代码:这是几乎每个iOS应用程序中的宏文件的实际链接。如果您是初学者,请不要过度使用单机版。对于单机版,您只想使用Matt Gallagher的代码,基本上每个iOS应用程序都会使用这些代码:这是他宏文件的实际链接,几乎在每个iOS应用程序中都有。如果你是初学者,不要过度使用单例。这是可以扭转的。如果单例并不比全局变量好多少,这意味着使用全局变量并不比创建单例对象差多少。这在一定程度上是正确的,但单例对象确实允许使用Obj C属性更好地封装应用程序的公共全局状态。一个单身汉比养一堆全球人稍微好一点,但是使用全球人的理由是不明智的,这和滥用单身汉的理由是一样的。我更喜欢另一种方式。如果你知道一个不是为重用而设计的小应用程序需要一些单例应用程序或类范围的状态,只需使用几个简单的旧C全局变量。你的答案可能暗示了这一点。你可以在一个小程序中侥幸逃脱很多,但这并不是一个好的实践。另一方面,在一个小程序中正确管理数据所需的工作量非常小,以至于有些人会说不这样做是愚蠢的。“快”和“脏”往往并不是那么快。单例允许您延迟实例化并获得稍微快一点的启动。然而,几乎所有的应用程序都会有某种全局状态,必须存储在某个地方——有些选择委托——我更喜欢单例:这是可以改变的。如果单例并不比全局变量好多少,这意味着使用全局变量并不比创建单例对象差多少。这部分是正确的,但是singleton
对象确实允许使用Obj C属性更好地封装应用程序的公共全局状态。我并不反对。一个单身汉比养一堆全球人稍微好一点,但是使用全球人的理由是不明智的,这和滥用单身汉的理由是一样的。我更喜欢另一种方式。如果你知道一个不是为重用而设计的小应用程序需要一些单例应用程序或类范围的状态,只需使用几个简单的旧C全局变量。你的答案可能暗示了这一点。你可以在一个小程序中侥幸逃脱很多,但这并不是一个好的实践。另一方面,在一个小程序中正确管理数据所需的工作量非常小,以至于有些人会说不这样做是愚蠢的。“快”和“脏”往往并不是那么快。单例允许您延迟实例化并获得稍微快一点的启动。然而,几乎所有的应用程序都会有某种必须存储在某个地方的全局状态——一些人选择代理——我更喜欢单例:如果op已经了解单例是如何工作的,这是一个选项,但我只推荐一个!我更喜欢在走捷径之前先了解机械原理。虽然你是对的——一旦你有了单身的想法,加拉赫先生的代码就棒极了!这是一个选择,但如果op已经了解单身人士是如何工作的,我只推荐一个!我更喜欢在走捷径之前先了解机械原理。虽然你是对的——一旦你有了单身的想法,加拉赫先生的代码就棒极了!