【iOS基础知识】const与宏的区别
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与宏的区别相关推荐
- IOS基础知识-ARC,分类,Block
IOS基础知识-ARC,分类,Block ARC快速入门 本小节知识点: 1.ARC机制判断 2.ARC快速使用 ARC基本概念 本小节知识点: 1.什么是ARC 2.ARC的注意点和优点 3.ARC ...
- C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策
一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...
- iOS面试必备-iOS基础知识
近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内 ...
- iOS基础知识(面试必备)
iOS开发的设计模式 一.代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源dele ...
- 软件测试基础知识 - 集成测试和系统测试的区别,以及它们的应用场景
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 区别 1.测试计划和测试用例编制的先后顺序:从V模型 ...
- 路由器wds设置最终版、一些ios基础知识
路由器wds wds是路由器的一个功能,能让多个无线路由连在一起. 教程:http://jingyan.baidu.com/article/fea4511a7c2b2ef7bb912523.html ...
- 【IOS基础知识】生成随机数
ios 有如下三种随机数方法: 1. srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; 2. ...
- 刷机前的基础知识:Fastboot和Recovery的区别、adb、bootloader
Fastboot和Recovery的区别 Fastboot Recovery 功能 线刷.刷入Recovery 卡刷.系统备份或升级.恢复出厂设置,twrp 层级 接近硬件,更底层 接近安卓系统 ...
- JS基础知识三:宏任务和微任务
宏任务和微任务 一.宏队列,macrotask,也叫tasks. 一些异步任务的回调会依次进入macro task queue,等待后续被调用 setTimeout setInterval setIm ...
最新文章
- Leetcode OJ: Remove Duplicates from Sorted Array I/II
- java cursor_使用3.0驱动程序的Java中的Tailable Cursor示例?
- 新媒体视频导演 - 美学基础 todo
- C语言进程的内存地址空间分配
- 数据库学习--wildfly配置postgreSQL数据源
- android 打开免打扰模式,Android 6.0设置模块免打扰功能浅析
- Android模拟器无法启动
- 32位的tetview and medit 在64bit的linux运行,有很多32bit的库没有安装,错误不断之解决办法。
- linux 模板 制作工具,OpenTBS 1.8.0 发布,生成 Office 的模板工具
- 面向猴子编程 GO制作水印
- 使用阿里云ESC服务器的时候域名解析成功为何打不开网站?
- Python学习手册之函数和模块
- sparksql中shuffled hash join策略
- 阿里云推高校YY计划助推大学生创业潮
- 中国人体工程学椅子行业市场供需与战略研究报告
- 【JavaSE】之注解与反射
- 微软官方工具_微软官方免费数据恢复工具Windows File Recovery帮你恢复电脑误删文件...
- Oracle分区表及分区索引
- 你觉得iPhone 13能成为下一个iPhone 6s吗?
- confluence 制作流程图_流程图绘制在线工具
热门文章
- 传奇的诞生,PHP三位创始人简介
- 从oracle10g 10.2.0.1 升级到10.2.0.4碰到的问题及解决
- CSS基础教程(企业内部培训)
- hdu 5019 第k大公约数
- 【错误记录】PyCharm 运行 Python 程序报错 ( PEP 8: E402 module level import not at top of file )
- 【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )
- 【OpenGL】二十二、OpenGL 光照效果 ( 模型准备 | 光照设置 | 启用光照 | 启用光源 | 设置光源位置 | 设置光照参数 | 设置环境光 | 设置反射材质 | 设置法线 )
- 【鸿蒙 HarmonyOS】UI 布局 ( 相对布局 DependentLayout )
- 【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
- JVM 常用参数一览表(转)