SingleTon GCD方法调用?

时间:2015-08-24 10:57:21

标签: ios singleton grand-central-dispatch

好的,这是一个概念性问题。 我有一个单身课

+(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片段内的代码是否会调用?我很困惑。如果我已经在内存中有这个类的对象并再次调用它或使用这个单例创建另一个实例,那么代码段内的代码是否运行?

1 个答案:

答案 0 :(得分:0)

在完成第n次文档并遵循正确的GCD模式之后,得出的结论是,当对象调用自身的静态对象时,初始化仅在应用程序的每个生命周期内完成一次。 我们可以在这里使用getter setter或property更改静态对象的值,但是如果在应用程序周期的生命周期之前已经完成了调用,则可以调用GCD块WONT内的任何内容。