gpt4 book ai didi

ios - 静态类与单例

转载 作者:IT王子 更新时间:2023-10-29 08:01:18 26 4
gpt4 key购买 nike

<分区>

所以,很简单的问题。忽略过度使用单例模式的影响。我试图在 Objective-C 中找到可靠的单例模式。我遇到过这个:

@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 大神?我敢肯定我不是第一个想到这个的人,但我保证,我首先进行了重复搜索。我发现的几个答案,我觉得是基于旧版本的 cocoa ,因为即使是讨论过的单例模式似乎也存在线程问题。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com