其他分享
首页 > 其他分享> > 【碎记】static

【碎记】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