国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

詳解IOS宏與常量的使用(define,const)

2019-10-21 18:43:31
字體:
來源:轉載
供稿:網友

小編給大家整理了關于IOS中宏(define)與常量(const)的正確使用方法,有助于大家更加深入的理解這方面的內容。

當我們想全局共用一些數據時,可以用宏、變量、常量

宏:

#define HSCoder @"漢斯哈哈哈"

變量:

NSString *HSCoder = @"漢斯哈哈哈";

常量:

四種寫法:static const NSString *HSCoder = @"漢斯哈哈哈";const NSString *HSCoder = @"漢斯哈哈哈";NSString const *HSCoder = @"漢斯哈哈哈";NSString * const HSCoder = @"漢斯哈哈哈";

 

const修飾的位置不同代表不同的意思:

NSString const * 和 NSString * const 不同在于前者相當于指針指向的內容不可修改,后者表示指針本身不可修改

有時候會遇到:

IOS,宏,常亮,define,const

const NSString *就會遇到警報:

IOS,宏,常亮,define,const

改成NSString * const就不會了。說明兩者是不同的。

IOS,宏,常亮,define,const

IOS,宏,常亮,define,const

思考:宏與常/變量的選擇?

宏:只是在預處理器里進行文本替換,沒有類型,不做任何類型檢查,編譯器可以對相同的字符串進行優化。只保存一份到 .rodata 段。甚至有相同后綴的字符串也可以優化,你可以用GCC 編譯測試,"Hello world" 與 "world" 兩個字符串,只存儲前面一個。取的時候只需要給前面和中間的地址,如果是整形、浮點型會有多份拷貝,但這些數寫在指令中。占的只是代碼段而已,大量用宏會導致二進制文件變大

變量:共享一塊內存空間,就算項目中N處用到,也不會分配N塊內存空間,可以被修改,在編譯階段會執行類型檢查

常量:共享一塊內存空間,就算項目中N處用到,也不會分配N塊內存空間,可以根據const修飾的位置設定能否修改,在編譯階段會執行類型檢查

常量區分

全局常量:不管你定義在任何文件夾,外部都能訪問

const NSString *HSCoder = @"漢斯哈哈哈";

比如:

IOS,宏,常亮,define,const

IOS,宏,常亮,define,const

局部常量:用static修飾后,不能提供外界訪問

static const NSString *HSCoder = @"漢斯哈哈哈";

一般項目中,定義全局常量,會寫在獨立文件里

如:

IOS,宏,常亮,define,const

IOS,宏,常亮,define,const

IOS,宏,常亮,define,const

 

注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊宁县| 留坝县| 玛多县| 甘南县| 桂阳县| 乌拉特中旗| 和政县| 高青县| 光泽县| 徐汇区| 普安县| 乌兰察布市| 思南县| 昭苏县| 冷水江市| 云南省| 嘉义县| 明溪县| 嘉荫县| 高陵县| 江安县| 交口县| 衡阳县| 文安县| 莱芜市| 涟水县| 三明市| 神农架林区| 双峰县| 宁蒗| 临猗县| 米林县| 昌吉市| 日喀则市| 班戈县| 夏津县| 行唐县| 镇雄县| 清苑县| 桦甸市| 辽宁省|