iOS开发中关键字const/static/extern、UIKIT_EXTERN的区别和用法

2020-01-21 03:27:44丽君

一、前言

对于刚入行的新手们这些关键字可能会经常搞混淆或不清楚它们的意思和用法吧,即使在网上看了区别,但是很久不用下次又不清楚了,而且即使清楚自己的代码恐怕也很少用起来吧。通过阅读别人优秀的代码总会发现一些常用的关键字,随着自己的编程经验的积累慢慢的明白的。

二、关键字const/static/extern/UIKIT_EXTERN的释义和用法

1、const

这个单词翻译成中文是“常量”的意思。在程序中我们知道“常量”的值是不能变的,固定的。所以const关键字的作用就呼之欲出了:

(1)const用来修饰右边的基本变量或指针变量

(2)被修饰的变量只读,不能被修改

下面举个最简单的例子:


//声明一个int类型的变量a,变量初始化值为10,并且变量a左边有一个const关键字修饰
int const a = 10;
//因为变量a被const修饰,就成为了只读,不能被修改赋值了,所以下面这行代码是错误的
a = 20;//错误代码
const int  a = 10; =======等价于======== int const a = 10;

下面再看一组练习,这组练习完成后,相信你就完全理解const的用法:

分别指出下面四行代码中 *p 和p是只读还是变量


int const *p  // *p只读 ;p变量
int * const p // *p变量 ; p只读
const int  * const p //p和*p都只读
int const * const p  //p和*p都只读

const的常用用法:


//定义一个全局只读变量
NSString * const Kname = @"appkey";
//static修饰后此全局变量只能本文件访问
static NSString *const Key = @"hddjj”;

2、static

这个单词翻译成中文是“静态”的意思。关从字面上理解还真没法跟他的作用关联起来,下面我们直接先看他的作用:

(1)修饰局部变量

保证局部变量永远只初始化一次,在程序的运行过程中永远只有一份内存,  生命周期类似全局变量了,但是作用域不变。这句话怎么理解呢?还是以代码例子来讲解吧。

随便建一个工程,在一个控制器类上监听控制器view的点击事件方法:

ios,extern,static,const,uikit

点击事件

输出日志如下:

ios,extern,static,const,uikit

输出日志

从输出日志中我们可以看到i一直等于1,这也是预料之中的,因为每次点击进入这个方法就会重新初始化一个全新的变量i= 0,加加了一次后值变为1,然后打印出结果为1,出了这个方法后局部变量i就被释放回收。所以每次打印出来的结果都为1。