热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【iOS基础知识】const与宏的区别

2019独角兽企业重金招聘Python工程师标准const与宏的区别区别:处理时刻:宏是预处理时(即在预处理时把宏展开,

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

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


推荐阅读
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 原文地址:https:blog.csdn.netqq_35361471articledetails84715491原文地址:https:blog.cs ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 管理UINavigationController中的手势返回 - Managing Swipe Back Gestures in UINavigationController
    本文介绍了如何在一个简单的闪存卡片应用中实现平滑的手势返回功能,以增强用户体验。 ... [详细]
  • 在Java中,每个对象都继承自Object类,并拥有equals、toString等方法。本练习要求定义一个PersonOverride类,并覆盖其toString和equals方法。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 本文详细介绍了如何在Android应用中实现重复报警功能。示例代码可在以下路径找到:https://developer.android.com/samples/RepeatingAlarm/index.html。首先,我们将从Manifest文件开始分析。 ... [详细]
  • 使用QT构建基础串口辅助工具
    本文详细介绍了如何利用QT框架创建一个简易的串口助手应用程序,包括项目的建立、界面设计与编程实现、运行测试以及最终的应用程序打包。 ... [详细]
  • 从键盘输入年、月、日,要求输出当前日期为当年的第多少天。今天凯凯君又去参加了笔试,碰到了这样一个题目,从键盘输入年、月、日,要求输出当前日期为当年的第多少天。面对这个题目你首先想到 ... [详细]
  • 本文详细介绍了`android.os.Binder.getCallingPid()`方法的功能和应用场景,并提供了多个实际的代码示例。通过这些示例,开发者可以更好地理解如何在不同的开发场景中使用该方法。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了如何高效地计算数组中和为2的幂的偶对数量,提供了从基础到优化的方法。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
  • 本文探讨了在UIScrollView上嵌入Webview时遇到的一个常见问题:点击图片放大并返回后,Webview无法立即滑动。我们将分析问题原因,并提供有效的解决方案。 ... [详细]
author-avatar
壹花壹浄土
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有