gpt4 book ai didi

ios - 单例类静态变量每次都设置为 nil

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:59 26 4
gpt4 key购买 nike

我正在制作一个单例类供我使用。我看到单例类的代码是这样的:

//First Example

+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}


//Second Example

static SingletonSample *sharedObject;

+ (SingletonSample*)sharedInstance {
if (sharedObject == nil) {
sharedObject = [[super allocWithZone:NULL] init];
}
return sharedObject;
}

秒数似乎很好并且可以理解。但我对第一个示例感到困惑,其中 sharedMyManager 每次都设置为 nil 并且每次都有一个共享管理器的分配,我怀疑第一个示例将如何返回类的相同引用(单例)。

谢谢。

最佳答案

首先,在函数中声明static时,它只被声明一次。所以,这条线

static MyManager *sharedMyManager = nil;

只会在函数第一次被调用时执行一次。

下一行当你使用dispath_once时,它只会被执行一次。所以 sharedMyManager 的创建将只完成一次。所以,这是创建单吨类的完美方式。

关于ios - 单例类静态变量每次都设置为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360013/

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