iOS-详细解读const

作者: 建国FooSun | 来源:发表于2016-04-12 11:28 被阅读380次

在过去开发中,几乎每一个人都会定义宏,因为这东西实在是好用,省去了代码量而且还不容易错,而我这篇文中所介绍的const可以完美替带宏定义.
并且苹果也建议大家抛弃宏定义而转投const ,并且swift里压根就没有宏定义这么一说,所以为了方便我们以后的开发,还是尽早弃暗投明的好 .
进入正题我们先来说说,

    1. const与宏的区别:
      (1)执行时刻:宏是预编译(编译之前处理),const是编译阶段。
      (2)编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。
      (3)宏可以定义一些函数,方法。 const不能。
      (这里需要证实一点,宏不会开辟新的内存空间 ,而是存放在常量区,也就是正常使用并不会造成内存暴涨 ).
  • 2.const作用:限制类型

  • (1)const仅仅用来修饰右边的变量(可以是基本数据变量p,也可以是指针变量*p)

  • (2).被const修饰的变量是只读的。

  • 3.const的具体用法
    只要记住一句话const只修饰右边最近的基本变量

  • 示例: const:修饰基本变量p , 这里有两种写法并且意义相同
    const int b =20;
    int const b =20;
    这里b是只读变量不允许修改值 .

  • 需要注意下面两句的区
    const修饰指针常量
    int const *p1; 则 *p1:常量(不可变) p1:变量(可变)
    const修饰指针变量
    int *const p; 则*p1:变量 p1:常量(不可变)
    从上面看来,const的定义区间就一目了然了 ,只要看它后面跟的是否为指针,是则指针的指向就是不可改变的, 如果后面是变量则变量的值不可修改.

  • 4.static与const联合使用

  • static与const作用:
    (1)声明一个只读的静态变量
    那么为什么要改变全局变量作用域,主要是为了防止重复声明全局变量。 在开发中声明的全局变量,有些不希望外界改动,只允许读取。这时就需要两者一起使用.
    (2) 声明一个静态的全局只读常量比如一个基本数据类型不希望别人改动则可使用 static const int a = 10;
    (3)也可以用来代替宏,把一个经常使用的字符串常量,定义成静态全局只读变量.
    (4)开发中经常拿到key修改值,因此用const修饰key,表示key只读,不允许修改。
    static NSString * const key = @"name";
    static NSString const *key1 = @"name";
    现在应该也可以分清这两句的区别了吧!

  • 5.extern与const联合使用 VS static与const联合使用

  • (1) static与const组合:只能在本文件中使用,如果多个文件同时使用,需要在每个文件都需要定义一份静态全局变量。

  • (2) extern与const组合:在多个文件中经常使用的同一个字符串常量,可以使用extern与const组合。如果你需要一个全局变量就可以选择
    extern NSString * const key = @"name";
    extern NSString const *key1 = @"name";
    虽然这种做法很方便,但是如果多人开发可能会出现大家定义冲突,所以建议
    通常搞一个文件,里面专门定义全局变量,统一管理,就可以避免定义冲突的情况了 .

相关文章

  • iOS-详细解读const

    在过去开发中,几乎每一个人都会定义宏,因为这东西实在是好用,省去了代码量而且还不容易错,而我这篇文中所介绍的con...

  • iOS-详细解读Const

    由于之前没有使用过简书,所以没有使用markdown书写 , 如果看着不方便,我之后又重新整理一份,看起来会整洁一...

  • iOS-申请邓白氏编码的超详细流程介绍

    iOS-申请邓白氏编码的超详细流程介绍 iOS-申请邓白氏编码的超详细流程介绍

  • iOS-账号密码自动填充与添加

    写的很详细,收藏下iOS-账号密码自动填充与添加

  • const

    (1)可以定义 const 常量 (2)const 可以修饰函数的参数、返回值. 详细内容: 1、什么是const...

  • Xcode7 打包Framework 相关问题

    关于Xcode7 framework打包方法这里不详细介绍了,请查看以下链接iOS-制作Framework最新 D...

  • runtime的关联引用

    下文会用到const,static关键词,下一篇文章会针对const,static,extern等关键字的用法详细...

  • iOS速记

    xiOS App上架流程(2016详细版)iOS-最全的App上架教程Windows环境下IOS APP打包上传A...

  • iOS-Block 中 为何使用 weakSelf 和 stro

    目录 本篇幅代码会有些多,需要读者耐心看完。 一 block 循环引用讲解 详细请移步至 iOS-底层原理(11)...

  • es6中的let和const

    前言 es6新增let和const命令,用来声明变量,用法类似var,接下来,我将详细的说说let和const 1...

网友评论

本文标题:iOS-详细解读const

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