玩iOS的小伙伴对const应该很不陌生, 在声明全局常量的时候很多时候都会用到,

但是有时候修饰对象很迷惑下面是个人总结, 下面的地址都是模拟的

1.

const NSString *str1 = @"123";
str1 = @"ads";

/*-- 对象地址 -- 对象 -- 指向的地址 ---- 值 ------ 值地址 ---
|   0x123456  str1    0x654321  || 123 ----   0x654321 | // const 修饰的是 *str, 而*str 是值, 所以const 修饰的就是值123
|             str1    0x654221  || ads ----   0x654221 | // 因为const 修饰的是值 所以 指针str 还是可变的(可以指向其他值)
*/

2.

NSString const *str2 = @"456";
str2 = @"zxc";

/*-- 对象地址 -- 对象 -- 指向的地址 ---- 值 ------ 值地址 ---
|   0x123464  str2    0x654311  || 456 ----   0x654311 | // 与上面同理
|             str2    0x654211  || zxc ----   0x654211 |
*/

3.

NSString* const str3 = @"789";
str3 = @"qwe"; // 报错

/*-- 对象地址 -- 对象 -- 指向的地址 ---- 值 ------ 值地址 ---
|   0x123478  str3    0x654301  || 789 ----   0x654301 | // const 修饰的是 str3, 而str3 是指针(指向的是值的地址),
|                               ||                     |    所以const 修饰的就是值789 的地址值
|   0x123478  str3    0x654301  || qwe ----   0x654201 | // 因为const 修饰的是指针(指向的是值的地址)
|                               ||                     |    所以 指针str3 是不可变的(不可以指向其他地址)
*/

转载于:https://www.cnblogs.com/MrTao/p/8609621.html

iOS 里const在修饰对象时候的用法相关推荐

  1. const与修饰函数形参

    C++中,const与&修饰函数形参的可能情况有四种:C语言中,情况只有1)和3)两种. 1) string str 这是最普通的传值调用,首先对原str进行一次拷贝,会调用拷贝构造函数.st ...

  2. assign 可以修饰对象吗

    assign 可以修饰对象的,由于assign 修饰的对象不是强引用,在调用的时候会操作对象已经释放,也就是野指针,但是assign修饰的对象的属性当对象释放属性不会被设置为nil,如果是strong ...

  3. 成员函数的const究竟修饰的是谁

    demo <pre name="code" class="cpp">class Test { public:const void OpVar(int ...

  4. 如何在Chrome调试器里检查嵌套Observable对象

    一个例子: 举个例子,看如下这个嵌套的Observable对象: items$: Observable<Observable<Product>[]> = this.compon ...

  5. input在iOS里的兼容性

    input框在iOS里,无法聚焦,不能输入内容,把-webkit-user-select:none改成-webkit-user-select:auto;或者直接加一个style="-webk ...

  6. #小程序# 如何解决video视频在ios里出现黑屏?

    1.遇到的bug: 小程序里面的视频,在安卓手机里面可以正常播放及显示,在ios里就是黑屏显示 <以下为ios里> 2.解决办法: 首先可以看下后端给的视频, 里面有没有存在中文,如果存在 ...

  7. Java中Final修饰对象

    Final修饰对象 众所周知,final是java的关键字,修饰符,用于声明属性(属性不可变).方法(方法不可重写)和类(类不可继承),那么final可以修饰对象么,修饰对象又是代表着什么? 先看一个 ...

  8. 对Spring Data JPA中的page对象下的content属性里的实体类对象转换为dto对象

    对Spring Data JPA中的page对象下的content属性里的实体类对象转换为dto对象. 刚开始试遍历content,进行转换,添加到新的list中,再set进去page.后来发现pag ...

  9. 3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景|判断数组里有没有某对象,有不添加,没有则添加到数组

    3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景 一.当数组中的数据是简单类型时: 应用js中的indexof方法:存在则返回当前项索引,不存在则返回 ...

最新文章

  1. 【Java】时间复杂度 与 空间复杂度
  2. Spring 极速集成注解 Redis 实践
  3. chrome面板介绍
  4. Linux 动态库和静态库
  5. 【我的物联网成长记3】如何开发物联网应用?
  6. java+getactionmap_Struts2 使用OGNL遍历map方法详解
  7. 5分绩点转4分_U19男篮世界杯 | 郭昊文空砍23分4篮板5助攻 国青72-86负菲律宾
  8. It企业的上市与退市
  9. 数据结构与算法——广度搜索BFS
  10. 关于使用 autoFac 的注入方法
  11. linux 命令行 光标移动技巧
  12. Ubuntu18.04安装Oracle11g
  13. 在linux系统下忘记了root密码,教你在Linux系统中解决忘记root口令密码的方法
  14. 科普:什么是CPU?CPU和芯片关系?CPU怎么做的?CPU有什么用?不同CPU有什么区别?我们怎么选CPU?(待补充完整)
  15. VS快捷键大全(包含记忆的口诀和演示)
  16. 如何 repack 一个RPM包
  17. php函数名命名规范,PHP语言的命名规则
  18. 《Deep Modular Co-Attention Networks for Visual Question Answering》论文翻译
  19. 阿里巴巴2015校招笔试题附加题1解答
  20. 用arduino IDE开发esp8266 wifi

热门文章

  1. HTML代码转换编辑器
  2. Exynos4412 文件系统制作(二)—— 文件系统简介
  3. Python的threading多线程
  4. gcc compiler warning: “will be initialized after/when initialized here”
  5. [html] 怎么去除img之间存在的间隔缝隙?
  6. PS教程第一课:PS简介
  7. 工作378-封装axios方法
  8. [css] 手写一个满屏品字布局的方案
  9. [css]怎么改变选中文本的文字颜色和背景色?
  10. [css] 过渡和动画的区别是什么?