const的简单介绍

本文探讨了iOS开发中const修饰符的应用,包括其如何保护字符串不被修改,以及在实际项目中如何通过合理使用const来管理和组织常量字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常在iOS中的头文件中看到苹果默认有很多的const修饰的字符串,那么,这些被const修饰的字符串跟平常的字符串有什么不同之处呢?


1,被const修饰过以后,字符串受到了强制保护,可以防止被别人修改。同时,在整个应用程序的内存中,只有一份。

常见使用:

a,  const NSString *str = @“这是字符串;

b,  NSString * const str= @"这是字符串";


2,那么这两种写法有什么区别呢?

第一种写法:const修饰的是指针,表示 str是可以指向其他的字符串,也就是 str=@"ss”; 

第二种写法:const修饰的是str这个变量,str无法指向其他的字符串,不能重新赋值。


3,在项目中经常这样使用,比如:

新建一个类,专门用户存放常量字符串,比如CZConst,将.h和.m文件中的所有代码都删除,在.h中写上如此代码:

extern NSString * const UMAppKey;

注意:这个主要用来声明有字符串,如果不这样写,那么,在多个类中引入之后,编译的时候,会报重复定义的错误。

在.m文件中写上:

NSString * const UMAppKey = @"43724987fdsajfdafdsaf4234";

注意:.m文件主要用来定义,.h文件用来声明,别的类使用的时候,只能使用.h文件,这样,就能避免重复定义了。系统是允许重复声明的。


可以将CZConst.h文件引入系统的.pch文件,这样,就不必每次使用的时候,都重新导入一遍了。



那么在使用的时候,如图:


<think>我们被要求简单介绍一下symbol,然后提出3-5个相关问题。 首先,我们需要知道symbol是什么。在编程中,symbol通常指的是一种基本数据类型,特别是在像JavaScript(ES6引入)或Ruby等语言中。Symbol是一种唯一且不可变的数据类型,通常用作对象属性的键,以避免命名冲突。 由于问题没有指定语言,我们可以以JavaScript为例进行介绍,因为Symbol在JavaScript中是一个重要的概念。 简单介绍: Symbol(符号)是ES6中引入的一种新的原始数据类型,表示独一无二的值。它主要用于对象属性的键,以确保属性名的唯一性,避免属性名冲突。Symbol值通过Symbol函数生成,每个Symbol值都是唯一的,即使传入相同的描述字符串,它们也是不同的。 示例代码(JavaScript): ```javascript // 创建Symbol let sym1 = Symbol('key'); let sym2 = Symbol('key'); console.log(sym1 === sym2); // false,因为每个Symbol都是唯一的 // 用作对象属性 let obj = {}; obj[sym1] = 'value'; console.log(obj[sym1]); // 'value' ``` 注意:Symbol不能使用new关键字,因为它不是构造函数。另外,Symbol属性不会出现在for...in循环中,也不会被Object.keys()返回,但可以使用Object.getOwnPropertySymbols()获取。 现在,根据要求,我们需要在回答末尾提出3-5个相关问题,并且第一行必须是“§§相关问题§§”,然后列出问题。 我们设计的问题应该围绕Symbol的概念、用途、特性等方面。</think>### Symbol 简介 在编程中,**Symbol**(符号)是一种基本数据类型,主要用于创建唯一且不可变的标识符。以下是关键特性: 1. **唯一性** 每个 Symbol 值都是唯一的,即使使用相同描述创建: ```javascript const sym1 = Symbol('id'); const sym2 = Symbol('id'); console.log(sym1 === sym2); // false ``` 2. **不可变性** 创建后无法修改,适合用作对象属性的键名: ```javascript const obj = {}; const key = Symbol('unique_key'); obj[key] = 'secret_data'; ``` 3. **避免命名冲突** 常用于库/框架开发,防止属性名被意外覆盖: ```javascript // React 中使用 Symbol 标识组件类型 typeof MyComponent === 'symbol' ``` 4. **内置 Symbol** 语言内置特殊 Symbol(如 `Symbol.iterator`)用于自定义对象行为: ```javascript const iterable = { [Symbol.iterator]: function* () { yield 1; yield 2; } }; ``` **主要用途**: - 创建对象私有属性 - 定义元编程行为(如迭代器协议) - 替代魔法字符串(magic strings) - 跨代码模块的唯一标识符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值