个人从两方面进行分析:
1.static静态变量
用static声明局部变量时,则改变变量的存储方式(生命期),使变量成为静态的局部变量,即编译时就为变量分配内存,直到程序退出才释放存储单元。这样,使得该局部变量有记忆功能,可以记忆上次的数据,不过由于仍是局部变量,因而只能在代码块内部使用(作用域不变)。
2.当前对象只创建一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
此区域内的代码只执行一次。
});
综上所属:static声明的intance对象,编译时就分配了内存,后期通过dispatch_once的方法进行intance的赋值,以后再次调用单例方法,都会获取已经存在的局部变量intance。