Ios 请帮助我理解如何实现objective-c单例
我对如何在objective-c中实现单例感到困惑 我读了这篇关于stackoverflow的文章,对正确答案所显示的代码感到困惑 此代码来自我上面的帖子链接Ios 请帮助我理解如何实现objective-c单例,ios,objective-c,Ios,Objective C,我对如何在objective-c中实现单例感到困惑 我读了这篇关于stackoverflow的文章,对正确答案所显示的代码感到困惑 此代码来自我上面的帖子链接 + (MyClass *)sharedInstance { static MyClass *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance
+ (MyClass *)sharedInstance
{
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}
我不明白的是下面这一行
static MyClass *sharedInstance = nil;
为什么需要将“nil”赋值给方法中的静态变量?
如果此行位于sharedInstance方法的顶部,则每次调用它时,静态变量都变为nil。
因为“dispatch_once”只被调用一次,我认为这个方法在调用一次之后总是返回nil
有人能帮我理解这东西是怎么工作的吗
此方法的第一行是否在第二次调用后也被忽略?任何类中的任何静态变量只创建一次,并在同一类的所有实例之间共享 但是静态变量还有另一种用法,那就是函数中的静态变量,这就是你的例子。函数中的静态变量是在后续调用中保留其值的变量
- (int)addOne
{
static int i;
i++;
return i;
}
在这里,即使i
是一个局部变量,i
也会保留上一次调用的值。但是如何初始化这样一个变量??嗯,你是这样做的
static int i=10;
初始化只在第一次调用函数时执行,在所有后续调用中跳过。A
static
变量只初始化一次。它只被设置为nil
一次,永远不会再设置。可能重复@rmaddy谢谢!这很有帮助!非常感谢你!!现在,我很清楚这一点!!此功能是Objective-C独有的吗?或者它也可以在C/C++中看到?(局部静态变量)这也在C/C中++
- (int)addOne
{
static int i;
i++;
return i;
}