首页 > 其他 > 详细

【碎记】static

时间:2021-09-07 05:30:18      阅读:35      评论:0      收藏:0      [点我收藏+]

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不管在哪声明,只要是可以访问到它的,调用它都是那一个它,不是它的副本。

【碎记】static

原文:https://www.cnblogs.com/tuzidewangblog/p/15233014.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!