所以,很简单的问题。忽略过度使用单例模式的影响。我试图在Objective-C中找到一个可靠的单例模式。我也碰到过这样的:Static Class vs Singleton
@implementation SomeSingleTonClass
static SomeSingleTonClass* singleInstance;
+ (SomeSingleTonClass*)getInstance
{
static dispatch_once_t dispatchOnceToken;
dispatch_once(&dispatchOnceToken, ^{
singleInstance = [[SomeSingleTonClass alloc] init];
});
return singleInstance;
}
- (void)someMethodOnTheInstance
{
NSLog(@"DO SOMET WORK")
}
@end
这个我有非常愉快的,但它导致了很多本:
[[SomeSingleTonClass getInstance] someMethodOnTheInstance];
我的问题是,为什么这不是一个纯粹的静态类更好。
@implementation SomeStaticClass
static NSString* someStaticStateVariable;
- (id)init
{
//Don't allow init to initialize any memory state
//Perhaps throw an exception to let some other programmer know
//not to do this
return nil;
}
+ (void)someStaticMethod
{
NSLog(@"Do Some Work");
}
所有你真正获得的,是轻度更清洁的寻找方法调用。基本上你换出这一点:
[[SomeSingleTonClass getInstance] someMethodOnTheInstance];
对于这个
[SomeStaticClass someStaticMethod];
这是肯定的未成年简化,可以随时存储您的类中的实例。这是更多的智力好奇心,我使用静态类而不是单身人士嘲笑Objective-C神吗?我确信我不能成为第一个想到这个问题的人,但我保证,我首先做了重复搜索。我发现的答案很少,我觉得是基于老版本的可可,因为即使讨论的单例模式似乎也受到线程问题的困扰。
我认为你是对的,但问题是有点儿费解(虽然答案是固体!)。我将要离开我的,但在该主题中给出答案后,我不需要等待Drummer的回答上的提示。这是正确的。谢谢! – ChrisCM
什么是静态类? – Monolo
静态类(可能有更好的名称)是一个依赖类方法和静态类变量的类,而不是实例化的对象和实例方法。这是什么使它成为一个方便的单身人士。特别是如果你编写你的init方法来抛出异常! – ChrisCM