2019独角兽企业重金招聘Python工程师标准>>>

const与宏的区别

区别:

处理时刻:宏是预处理时(即在预处理时把宏展开,替换为原来的值),const是编译运行时(编译器在编译时会检查错误,程序在运行时,从内存(堆或栈)中读取)

编译检查:宏不会编译报错,const会包编译错误

宏好处:可以定义函数和方法、const不可以定义函数和方法

宏坏处:大量使用宏,会使编译时间太久,每次编译都需要替换

宏:

1、常见的常量,定义为宏,例如appName,age

#define kAge 20

2、常见的方法,定义为宏,例如UserDefault

#define kUserDefault [NSUserDefaults standardUserDefaults]

const

const只用于修饰右边的变量(基本数据变量p,指针变量*p),被const修饰的变量是只读的。

1、修饰基本数据变量,这两种方法是一样的,const只修饰右边的变量。

const int b = 20; // b:只读变量
int const b1 = 20; // b:只读变量

2、修饰指针变量(const修饰右边的变量),所以,它*p1是常量,p1是变量

const int *p1; // *p1:常量 p1:变量
int const *p1; // *p1:常量 p1:变量

下面这个例子,第一个const,修饰的是*p1,第二个修饰p1,故:*p1、p1都是常量

const int * const p1; // *p1:常量 p1:常量int const * const p1;  // *p1:常量 p1:常量

3、const 修饰 oc对象

// 字符串常量
static NSString * const kAppName = @"Wexin";

对于NSString类型的常量,苹果推荐使用const,推荐用法:

UIKIT_EXTERN NSString *const UITableViewSelectionDidChangeNotification;

转载于:https://my.oschina.net/Misayalvyuan/blog/716642

【iOS基础知识】const与宏的区别相关推荐

  1. IOS基础知识-ARC,分类,Block

    IOS基础知识-ARC,分类,Block ARC快速入门 本小节知识点: 1.ARC机制判断 2.ARC快速使用 ARC基本概念 本小节知识点: 1.什么是ARC 2.ARC的注意点和优点 3.ARC ...

  2. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  3. iOS面试必备-iOS基础知识

    近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内 ...

  4. iOS基础知识(面试必备)

    iOS开发的设计模式 一.代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源dele ...

  5. 软件测试基础知识 - 集成测试和系统测试的区别,以及它们的应用场景

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 区别 1.测试计划和测试用例编制的先后顺序:从V模型 ...

  6. 路由器wds设置最终版、一些ios基础知识

    路由器wds wds是路由器的一个功能,能让多个无线路由连在一起. 教程:http://jingyan.baidu.com/article/fea4511a7c2b2ef7bb912523.html ...

  7. 【IOS基础知识】生成随机数

    ios 有如下三种随机数方法: 1.    srand((unsigned)time(0));  //不加这句每次产生的随机数不变         int i = rand() % 5; 2.     ...

  8. 刷机前的基础知识:Fastboot和Recovery的区别、adb、bootloader

    Fastboot和Recovery的区别   Fastboot Recovery 功能 线刷.刷入Recovery 卡刷.系统备份或升级.恢复出厂设置,twrp 层级 接近硬件,更底层 接近安卓系统 ...

  9. JS基础知识三:宏任务和微任务

    宏任务和微任务 一.宏队列,macrotask,也叫tasks. 一些异步任务的回调会依次进入macro task queue,等待后续被调用 setTimeout setInterval setIm ...

最新文章

  1. Leetcode OJ: Remove Duplicates from Sorted Array I/II
  2. java cursor_使用3.0驱动程序的Java中的Tailable Cursor示例?
  3. 新媒体视频导演 - 美学基础 todo
  4. C语言进程的内存地址空间分配
  5. 数据库学习--wildfly配置postgreSQL数据源
  6. android 打开免打扰模式,Android 6.0设置模块免打扰功能浅析
  7. Android模拟器无法启动
  8. 32位的tetview and medit 在64bit的linux运行,有很多32bit的库没有安装,错误不断之解决办法。
  9. linux 模板 制作工具,OpenTBS 1.8.0 发布,生成 Office 的模板工具
  10. 面向猴子编程 GO制作水印
  11. 使用阿里云ESC服务器的时候域名解析成功为何打不开网站?
  12. Python学习手册之函数和模块
  13. sparksql中shuffled hash join策略
  14. 阿里云推高校YY计划助推大学生创业潮
  15. 中国人体工程学椅子行业市场供需与战略研究报告
  16. 【JavaSE】之注解与反射
  17. 微软官方工具_微软官方免费数据恢复工具Windows File Recovery帮你恢复电脑误删文件...
  18. Oracle分区表及分区索引
  19. 你觉得iPhone 13能成为下一个iPhone 6s吗?
  20. confluence 制作流程图_流程图绘制在线工具

热门文章

  1. 传奇的诞生,PHP三位创始人简介
  2. 从oracle10g 10.2.0.1 升级到10.2.0.4碰到的问题及解决
  3. CSS基础教程(企业内部培训)
  4. hdu 5019 第k大公约数
  5. 【错误记录】PyCharm 运行 Python 程序报错 ( PEP 8: E402 module level import not at top of file )
  6. 【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )
  7. 【OpenGL】二十二、OpenGL 光照效果 ( 模型准备 | 光照设置 | 启用光照 | 启用光源 | 设置光源位置 | 设置光照参数 | 设置环境光 | 设置反射材质 | 设置法线 )
  8. 【鸿蒙 HarmonyOS】UI 布局 ( 相对布局 DependentLayout )
  9. 【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
  10. JVM 常用参数一览表(转)