【碎记】static
作者:互联网
static 关键字
static代表了堆变量,只要用static修饰了,那么这个变量就放到了堆上。它跟放到栈里的普通变量有什么区别呢?区别在于每次调用的时候,堆变量都是同一个变量,而栈则是方法结束就变量死亡,方法开始就重新生成一个变量。
下面请看代码:
有一个类叫Myclass,.m内容如下:(声明一个a然后++)
- (instancetype)init{
self = [super init];
static int a = 1;
a ++;
NSLog(@"%d",a);
return self;
}
然后我在主函数里多次调用这个方法:
MyClass * myclass = [[MyClass alloc]init];
[myclass init];
[myclass init];
[myclass init];
结果如下:
2021-09-06 11:12:10.154506+0800 OCDemo[8382:92762] 2
2021-09-06 11:12:10.154604+0800 OCDemo[8382:92762] 3
2021-09-06 11:12:10.154651+0800 OCDemo[8382:92762] 4
2021-09-06 11:12:10.154700+0800 OCDemo[8382:92762] 5
说明后面虽然重新调用了方法并且方法里面重新局部声明的a,但是结果还是会对上一次的结果叠加。
也就是说,static不管在哪声明,只要是可以访问到它的,调用它都是那一个它,不是它的副本。
标签:06,变量,0800,8382,init,static,碎记 来源: https://www.cnblogs.com/tuzidewangblog/p/15233014.html