static的作用:常用来修饰变量。

全局变量被static修饰后,就称之为静态全局变量;局部变量被static修饰后,就称之为静态局部变量。统称为静态变量。

如果需要进一步解释下面的现象,可以了解iOS的内存管理方面的知识,比如局部变量是放置在栈区,而全局变量和静态变量是放置在静态区的。

一、static修饰局部变量

- (void)test {

    NSInteger i = ;
i++; static NSInteger m = ;
m++; NSLog(@"i = %ld, m = %ld", (long)i, (long)m); NSString *normalString; static NSString *staticString; NSLog(@"normal = %p, static = %p", &normalString, &staticString); }

将上述方法在调用三次的打印结果是:

i = , m = 

normal = 0x8e73d21, static = 0x928b78a89

i = , m = 

normal = 0x8e73b09, static = 0x928b78a89

i = , m = 

normal = 0x8e73c18, static = 0x928b78a89

总结:

当static关键字修饰局部变量时,只会对该变量初始化一次。

当static关键字修饰局部变量时,该变量在程序中只有一份内存。

当static关键字修饰局部变量时,该变量的作用域不会改变。

当static关键字修饰局部变量时,该变量的生命周期被延长,直到程序结束才销毁。

二、static修饰全局变量

#import "ClassA.h"

// 声明一个全局变量
NSInteger num; @implementation ClassA @end

在工程ClassA.m文件中证明一个全局变量,如果同时在其他.m文件中也声明一个全局变量NSIteger num,编译的时候就会报错。

在其他文件中如果想访问全局变量num,可以import "ClassA.h"然后就能访问,或者不import,使用extern 关键字也能获得全局变量,比如:

- (void)viewDidLoad {

    extern NSInteger num;
NSLog(@"num = %ld", (long)num);
}

如果不想被整个工程文件所访问到,但是能在所声明的文件中自由访问,就需要使用static关键字来声明,如下:

#import "ClassA.h"

// 声明一个静态文件的全局变量
static NSInteger num; @implementation ClassA @end

总结:当用static关键字修饰全局变量时,该变量的作用域仅限于当前文件,工程中的其他文件不可以访问到该全局变量。

static关键字的作用是什么?的更多相关文章

  1. C#: static关键字的作用(转)

    C#: static关键字的作用   static意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前 ...

  2. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

  3. 【转载】Static 关键字的作用

    原始日期:2016-07-16 17:53   一   普通的static关键字 1.  静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变 ...

  4. static 关键字的作用

    在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区). 2) 在模块内(但在函数体外),一个被声明为静态 ...

  5. 转:C#: static关键字的作用

    tatic意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前,表示每次重新使用该变量所在方法.类或自 ...

  6. Static关键字的作用及使用

    1.使用static声明属性 如果希望一个属性被所有对象共同拥有,可以将其声明为static类型. 声明为static类型的属性或方法,此属性或方法也被称为类方法,可以由类名直接调用. class P ...

  7. C#学习笔记随笔(1)----C#中static关键字的作用

    静态分配的,有两种情况: 1. 用在类里的属性.方法前面,这样的静态属性与方法不需要创建实例就能访问, 通过类名或对象名都能访问它,静态属性.方法只有“一份”:即如果一个类新建有N个 对象,这N 个对 ...

  8. static关键字的作用(修饰类、方法、变量、静态块)

    1. static修饰的类只能为内部类,普通类无法用static关键字修饰.static修饰的内部类相当于一个普通的类,访问方式为(new 外部类名.内部类的方法() ).如下所示: public c ...

  9. C语言中static关键字的作用

    static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加sta ...

随机推荐

  1. h5 调起app 如果没安装就跳转下载

    <!doctype html> <html> <head> <title></title> <meta charset="u ...

  2. htm5实现 文件夹上传

    观察百度云上传,可以看到input type=file 的标签上加个一个属性“webkitdirectory”,加上次属性即可选择整个文件夹.

  3. 04hive查询

    详细文档查看:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 一. 基本查询(SELECT …FROM) ...

  4. 【网搜】禁止 number 输入非数字(Android仍有问题)

    目的:使用 number 表单,让其只可输入数字. 问题:ios 可正常限制,Android 仍可输入  [ e | . |  - |  + ]   这4个字符.猜测这4个字符在数值中为科学记数.小数 ...

  5. 猴博士4小时讲完C语言视频教程

    猴博士4小时讲完C语言视频教程,一共有9节课. 目录结构如下: 目录:/2020030-猴博士4小时讲完C语言 [1G] ┣━━1.C语言基本语句(上)(更多资源访问:www.jimeng365.cn ...

  6. warmup

    先简单了解下源码中的2个函数: <?php echo mb_strpos("朋友比生命还重要?或许是吧" . '?',"?"); echo "\ ...

  7. 微信小程序解析HTML标签带有<p>

    小程序中默认是不支持html格式没有<p>标签,但是有些接口需要返回带有标签的,例如 : 隐私协议: 解决方法: 小程序中有一个富文本标签组件,前端可以解析H5标签就是 rich-text ...

  8. Abaqus-GUI开发-RSG

    目录 1. GUI开发简介 2. 目标和消息 2.1消息类型和消息ID 2.2消息映射 3. 控件创建 1. GUI开发简介 Abaqus GUI程序开发时,可以采用两种方式创建GUI图形界面. (1 ...

  9. Go之NSQ

    文章引用自 NSQ NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ. NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. N ...

  10. 【Hibernate 检索策略】

    HibernateDemo2 public class HibernateDemo2 { //演示批量抓取 @Test public void testSelect3() { SessionFacto ...