iOS const static extern

前言

本篇主要介紹在開發(fā)中怎么使用const,static,extern3個關(guān)鍵字

一、Const

簡介:之前常用的字符串常量,一般是抽成宏,但是蘋果不推薦我們抽成宏,推薦我們使用const常量。
1.const用來修飾右邊的基本變量或指針變量
2.被修飾的變量只讀,不能被修改

1.1 基本數(shù)據(jù)類型

int const a = 1;
const int b = 1; // 等價
    
a = 10; // 錯誤
b = 10; // 錯誤

1.2 指針類型

1.2.1 指針符號左側(cè)
int a = 1;
int b = 2;
int const *p = &a;
p = &b;
*p = 10; // 錯誤
1.2.2 指針符號右側(cè)
int a = 1;
int b = 2;
int *const p = &a;
*p = 10;
p = &b; // 錯誤
1.2.3 指針符號兩側(cè)
int a = 1;
int b = 2;
int const * const p = &a;
*p = 10; // 錯誤
p = &b; // 錯誤
1.2.4 練習
int const *p // *p只讀; p變量
int * const p // p只讀; *p變量
const int * const p // p和*p都是只讀
int const * const p // p和*p都是只讀

\color{#D86481}{注: 判斷是只讀還是變量,關(guān)鍵是看const在誰前面}\

二、Static

2.1 修飾局部變量

static讓局部變量只初始化一次,生命周期已經(jīng)跟全局變量類似了,只是作用域不變。

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    // 聲明一個局部變量i
    static int i = 0;
    // 每次點擊view來到這個方法時讓i自增
    i ++;
    //打印結(jié)果 1,2,3,4,5....
    NSLog(@"i=%d",i);
}
2.2 修飾全局變量

iOS中在一個文件聲明的全局變量,但又不想讓其他文件訪問,這時就可以用static修飾它了,單例中全局變量基本上都會用static修飾。

@implementation UserTool

// static修飾全局變量,讓外界文件無法訪問
static UserTool *_sharedManager = nil;

+ (LoginTool *)sharedManager {
     static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        _sharedManager = [[self alloc] init];
    });
    return _sharedManager;
}

三、 extern

extern主要是用來引用全局變量,它的原理就是先在本文件中查找,本文件中查找不到再到其他文件中查找。
常把extern和const聯(lián)合使用在項目中創(chuàng)建一個文件,這個文件文件中包含整個項目中都能訪問的全局常量。

extern NSString * homeName;

四、static和const聯(lián)合使用

// static修飾后此全局變量只能本文件訪問
static NSString *const name= @"名字";

五、extern和const聯(lián)合使用

// .h文件聲明
extern NSString * const homeName;

// .m文件定義
NSString * const homeName = @"首頁";
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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