iOS定義靜態變量、靜態常量、全局變量


靜態變量

當我們希望一個變量的作用域不僅僅是作用域某個類的某個對象,而是作用域整個類的時候,這時候就可以使用靜態變量。

static
static修飾的變量,是一個私有的全局變量。
C或者Javastatic關鍵字修飾的變量,可以使用類名直接拿到這個變量對象,在其他類中可以進行修改。但是在OCstatic修飾的變量是不能通過類名直接訪問的,它只作用於它聲明所在的.m文件中。
static修飾的變量必須放在@implementation外面或方法中,它只在程序啟動初始化一次。

static int num;

靜態常量

const
const修飾的變量是不可變的,如果需要定義一個時間間隔的靜態常量,就可以使用const修飾。

static const NSTimeInterval LMJTimeDuration = 0.5;

如果試圖修改TimeDuration編譯器則會報錯。

如果我們定義一個字符串類型的靜態常量就要注意了,這兩種寫法是一樣的,而且是可以修改的

static NSString const * LMJName = @"iOS開發者公會"; static const NSString * LMJName = @"iOS開發者公會";

這兩種寫法cons修飾的是* LMJName,*是指針指向符,也就是說此時指向內存地址是不可變的,而內存保存的內容時可變的。
所以我們應該這樣寫:

static NSString * const LMJName = @"iOS開發者公會";

當我們定義一個對象類型常量的時候,要將const修飾符放到*指針指向符后面。

全局變量

extern
extern修飾的變量,是一個全局變量。

extern NSString * LMJName = @"iOS開發者公會;

extern修飾的變量也可以添加const進行修飾:

extern NSString * const LMJName = @"iOS開發者公會;

此時全局變量只能被初始化一次
extern定義的全局常量的用法和宏定義類似,但是還是有本質上的不同的。 extern定義的全局常量更不容易在程序中被無意竄改。

版權聲明:出自MajorLMJ技術博客的原創作品 ,轉載時必須注明出處及相應鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM