我想在iPhone应用程序中创建我的对象单例。在objective-c中实现它的正确方法是什么。
答案 0 :(得分:2)
我是这样做的。
+(MyClass*) mySingleton
{
static MyClass* theSignleton = nil;
@synchronized([MyClass class])
{
if (theSingleton == nil)
{
theSingleton = [[MyClass alloc] init];
}
}
return theSingleton;
}
这并不能阻止人们意外地创建非单例实例,但我认为设计你的课程更好,这样非单身人士不会打破课堂而不是试图阻止非单身人士。这使得它们在单元测试中更容易处理。
答案 1 :(得分:1)
Singleton类是一个需要理解的重要概念,因为它们表现出非常有用的设计模式。这个想法在整个iPhone SDK中使用,例如,UIApplication有一个名为sharedApplication的方法,当从任何地方调用时,它将返回与当前运行的应用程序相关的UIApplication实例。
答案 2 :(得分:0)
我使用matt gallagher http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html写的那个。它的使用非常简单,博客文章是一种完整的教程。
答案 3 :(得分:0)
虽然我不太喜欢C-macros,但我发现这个macro-based singleton synthesizing approach显着