美文网首页
如何使用const修饰常量

如何使用const修饰常量

作者: 海边漫步的我 | 来源:发表于2017-09-20 11:26 被阅读173次

在程序中我们会经常的遇到一些常量是经常使用的,我们通常将他们定义成枚举类型 或 宏定义类型 再或是const常量

1.宏定义(苹果不推荐,在swift中已被抛弃,推荐使用const)

宏定义属于预编译指令,在程序运行之前已经编译好了的,比如下面:
#define DeviceId @"deviceid"
如果在程序中有用到DeviceId的,那么会在程序运行之前将所有的DeviceId替换成@"deviceid",每次替换相当于开辟了一块临时的内存空间。显然这样是浪费的。

既然推荐使用const,那它和宏有啥区别,为什么推荐?

1.编译时刻  宏:预编译 const:编译
2.编译检查  宏没有编译检查,不会报编译错误,只是替换;const有编译检查,会报编译错误
3.宏的好处  宏能定义一些函数,方法,但是const不可以
4.宏的坏处  大量使用宏,会导致预编译时间过长。
5.宏会占用更多的内存空间,const不会

const有两个作用:
1.修饰右边的基本变量和指针变量;
2.被const修饰的变量只读,也就是只能获取,不能修改。

const的使用场景:
1.修饰全局变量  ==>全局只读变量  ==>  代替宏
2.修饰方法中的参数

2. extern和const组合定义(定义全局只读变量,多个文件经常使用同一个字符串常量)

~~~~extern修饰的全局变量默认是有外部链接的,作用域是整个工程
1.可以定义一个全局常量管理的类,GlobalConfig在.h中先声明如下:
   extern NSString * const kAppDidVideoTimeOutNotification;
如果参照苹果的写法就是
  UIKIT_EXTERN NSString * const kAppDidVideoTimeOutNotification;
2.在.m中实现如下:
  @implementation GlobalConfig
  NSString * const kAppDidVideoTimeOutNotification =    @"kAppDidVideoTimeOutNotification";
接下来就把该头文件导入pch里面,全局就可以使用了

3.static和const组合定义

1.static的作用
(1)修饰局部变量:被static修饰的局部变量,可以延长生命周期,生命周期跟整个应用程序一致;被static修饰的局部变量,只会分配一次内存。
 (2)修饰全局变量:被static修饰的全局变量,作用域会修改,生命周期不会改,只能在当前文件下使用。
static将一个全局变量变成局部变量
const将一个局部变量变成局部常量
 // 定义了一个局部常量
  static const  NSString *str = @"123";

相关文章

  • 5.const与指针

    1.const修饰指针-常量指针 2.const修饰常量-指针常量 3.const修饰指针和常量 代码如下

  • 如何使用const修饰常量

    在程序中我们会经常的遇到一些常量是经常使用的,我们通常将他们定义成枚举类型 或 宏定义类型 再或是const常量 ...

  • const汇总

    const汇总 1.c语言中的const 2.const修饰基本数据类型 表示常量,在使用这些常量的时候,只要不改...

  • c++ const

    const 可修饰指针常量,可修饰常量指针,可以既修饰指针,也修饰常量常量指针:int a=10;int b=20...

  • 浅谈 Const、Exetrn和Static

    Const const修饰常量 被const修饰的属性不能改变: static和exetrn static 在全局...

  • const & static & volatile

    1.const,static,volatile修饰变量代表什么意思? const:修饰的变量为常量,常量是不允许修...

  • iOS OC杂文

    1.const const修饰的是其右侧的内容const修饰的是只读的,const *修饰的是指针,所以指针是常量...

  • iOS开发常用关键字const,static,extern

    const const翻译成中文是常量,常量是不可变的。const作用: const用来修饰基本变量或指针变量。 ...

  • const的作用

    1、 修饰变量const int a = 3; //常量a的值不能再修改int const b = 3; //常量...

  • 三、表达式

    一. 常量和变量 变量 常量使用 const 关键字修饰,只能定义在全局范围,只能修饰基本类型,必须立即用字面量初...

网友评论

      本文标题:如何使用const修饰常量

      本文链接:https://www.haomeiwen.com/subject/clxgsxtx.html