基础不扎实加上文科出生的我,对自己的技术很是不自信,但是我爱学习,努力成长
const 众所周知,这是常量修饰,怎么理解和使用呢?
需要结合对比才可以看得出来
const 宏(define)与常量(const)
一、
define 定义任何code块是全局可以使用的宏,
const 也是可以定义全局可以使用的常量
二、
define 不需要指定类型,只是code块的替换例如下面
#define Main_Width ([[UIScreen mainScreen] bounds].size.width)
#define BaseImage ([UIImage imageNamed:@"logo"])
const 可以指定类型,在编译的时候就会做类型的检查 如下
constNSString* myName=@"我就是测试";
三、
刚刚入行和不注重优化的时候,我就是认为两个都是一样的,反正接触的都是轻量级别的项目,统一使用define。但是深入理解一点,他们是有区别的。
define:虽然全局使用起来非常好用,尤其放在全局的文件里面,几乎可以整个项目都可以使用,例如全局文件PCH,但是大量的宏会导致二进制文件变大,影响启动速度
const:在内存上是常量,共用一块内存空间,也就是不管在文件中使用多少次,内存是不变的,而且apple官网也是推荐多使用const常量
const 基本使用
const NSString * myName = @"我就是测试能不能全局使用";
可以在任意的类里面进行申明const 如在Person类里面任意申明一个myName 如下图
在 AppDelegate 不需要#import "Person.h" 就可以调用调用myName
const 位置
当只是全局调用,不需要改变值的时候,以下三种都是一样可以获得常量值
当const在 * 右边的时候,常量是不被修改的,如下三张图
网友评论