iOS 中 extern const static define

  • 前言
很多人搞不懂這種問題,打算整理一篇文章當自己忘記的時候,也可以翻來看看
  • 目錄
1.  extern const static define 用法
2.  深層次理解 extern const static define

一 . extern const static 用法
const 一般用來定義一個常量

// 不可以被修改
NSString* const text = @"Text"; 
// 可以被修改
NSString const *text = @"Text";
  • extern
    外部變量,引用其他類的全局變量
.m 文件中
NSString* const scheme = @"Scheme";

.h 文件中
extern NSString* const scheme;

在其他文件中可以直接訪問。
或者采用下面這種寫法:

在一個文件中
NSString * const str = @"123";
在另外一個文件中引用的時候:
extern NSString* str;
  • static 修飾的變量是一個私有的全局變量
    作用: 延長局部變量的生命周期,程序結(jié)束時才會銷毀
例如: 在一個文件中聲明:
static NSString* const scheme = @"Scheme";
在另外一個文件中聲明 :
extern NSString* scheme;

編譯階段不會報錯,但是在運行期,會報如下錯誤:

E9C6FC8D-45E3-4A0F-9472-853FD6AB1B5D.png
  • define
    是一條預(yù)編譯指令,編譯器在編譯階段會將所有使用到的地方簡單的進行替換
用法:
#define SCHEME 100

二 . 深層次理解 extern const static define

const 和 define

相同點:
const 和 define 都能定義一個常量,都能實現(xiàn)修改值修改一次,
所有用上該變量的值都能做到同步的修改,
這樣代碼就變得易于維護,提高代碼的效率。
不同點:
const 給出的是對應(yīng)內(nèi)存的地址,所以const定義的常量在程序運行過程中只有一份拷貝
而 #define 定義的常量在內(nèi)存中有若干個拷貝
宏能做到 const 做不到的事情:
1. 宏能定義函數(shù)
2. 宏能根據(jù)傳入的參數(shù)生成字符串
#define string(str1,str2) #str1#str2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容