这是一个概念性问题。我有一个单例类
+(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块中的任何东西,那么它将不会被调用。