如何在objective-c for iphone中实现singleton

如何在objective-c for iphone中实现singleton,iphone,objective-c,singleton,Iphone,Objective C,Singleton,我想让我的对象在iPhone应用程序中成为单例。在objective-c中实现这一点的正确方法是什么 单例类是一个需要理解的重要概念,因为它们展示了一种非常有用的设计模式。这一思想贯穿于iPhone SDK,例如,UIApplication有一个名为sharedApplication的方法,当从任何地方调用该方法时,将返回与当前运行的应用程序相关的UIApplication实例 我用的是马特·加拉赫写的那本。它的使用非常简单,博客文章是一种完整的教程。以下是我的做法 +(MyClass*) my

我想让我的对象在iPhone应用程序中成为单例。在objective-c中实现这一点的正确方法是什么

单例类是一个需要理解的重要概念,因为它们展示了一种非常有用的设计模式。这一思想贯穿于iPhone SDK,例如,UIApplication有一个名为sharedApplication的方法,当从任何地方调用该方法时,将返回与当前运行的应用程序相关的UIApplication实例


我用的是马特·加拉赫写的那本。它的使用非常简单,博客文章是一种完整的教程。

以下是我的做法

+(MyClass*) mySingleton 
{
     static MyClass* theSignleton = nil;

     @synchronized([MyClass class])
     {
         if (theSingleton == nil)
         {
             theSingleton = [[MyClass alloc] init];
         }
     }
     return theSingleton; 
}

这并不能阻止人们意外地创建非单例实例,但我认为最好是设计类,使非单例不会破坏类,而不是试图阻止非单例。它使它们更容易在单元测试中处理。

虽然我不太喜欢C宏,但我发现这一点非常了不起

我能知道为什么投票否决吗。我的问题有错误吗?不是我投了你的反对票,但很可能是因为这个问题在过去的十年里被回答了十几次。(我可以介绍一下:搜索框吗↗)