单例GCD方法调用



这是一个概念性问题。我有一个单例类

+(instancetype)gameObjectSingleTon{
static GameObject *game = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    if(myBOOL){
        NSLog(@"Get Defaut settings!");
    }
    else {
        game = [[GameObject alloc]init];
        game.difficultyLevel = @"1";
    }
});
return game;

}这里游戏是自我。现在,每当我调用这个方法来获得单例对象,MyBOOL的值可能会改变,代码内的GCD片段甚至调用?我对此感到困惑。如果我已经在内存中有这个类的对象,并再次调用它或使用这个单例创建另一个实例,代码片段内不运行?

在第n次浏览文档并遵循正确的GCD模式之后,得出的结论是,当对象调用其自身的静态对象时,在应用程序的每个生命周期中只进行一次初始化。我们可以在这里用getter setter或property来改变静态对象的值,但是如果在应用周期的生命周期之前调用了GCD块中的任何东西,那么它将不会被调用。

最新更新