iOS 里const在修饰对象时候的用法
生活随笔
收集整理的這篇文章主要介紹了
iOS 里const在修饰对象时候的用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
玩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在修饰对象时候的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程其实就是一个个指令组成的,当这个线程
- 下一篇: 使用Runnable配合Thread创建