注意:很多blog都說使用巨集,會消耗很多記憶體,我這驗證並不會生成很多記憶體,巨集定義的是常量,常量都放在常量區,只會生成乙份記憶體。
// 常見的常量:抽成巨集
#define xmgaccount @"account"
#define xmguserdefault [nsuserdefaults standarduserdefaults]
// 字串常量
static nsstring * const account = @"account";
- (void)viewdidload
- (void)viewdidload
@implementation viewcontroller
// 定義唯讀全域性常量
nsstring * const str = @"123";
// 當乙個方法的引數,唯讀.
- (void)test:(nsstring * const)name
// 指標唯讀,不能通過指標修改值
- (void)test1:(int const *)a
// 基本資料型別唯讀
- (void)test2:(int const)a
@end
1.只能在本檔案中訪問,修改全域性變數的作用域,生命週期不會改
extern作用
:
只是用來獲取全域性變數(包括全域性靜態變數)的值,不能用於定義變數
extern工作原理
:
先在當前檔案查詢有沒有全域性變數,沒有找到,才會去其他檔案查詢。
// 全域性變數:只有乙份記憶體,所有檔案共享,與extern聯合使用。
int a = 20;
// static修飾全域性變數
static int age = 20;
- (void)test
- (void)viewdidload
i
// 開發中常用static修飾全域性變數,只改變作用域
// 為什麼要改變全域性變數作用域,防止重複宣告全域性變數。
// 開發中宣告的全域性變數,有些不希望外界改動,只允許讀取。
// 比如乙個基本資料型別不希望別人改動
// 宣告乙個靜態的全域性唯讀常量
static const int a = 20;
// staic和const聯合的作用:宣告乙個靜態的全域性唯讀常量
// ios中staic和const常用使用場景,是用來代替巨集,把乙個經常使用的字串常量,定義成靜態全域性唯讀變數.
// 開發中經常拿到key修改值,因此用const修飾key,表示key唯讀,不允許修改。
static nsstring * const key = @"name";
// 如果 const修飾 *key1,表示*key1唯讀,key1還是能改變。
static nsstring const *key1 = @"name";
全域性常量正規寫法:開發中便於管理所有的全域性變數,通常搞乙個globeconst檔案,裡面專門定義全域性變數,統一管理,要不然專案檔案多不好找。
globeconst.h
/*******************************首頁****************************/
extern nsstring * const namekey = @"name";
/*******************************首頁****************************/
#import /*******************************首頁****************************/
nsstring * const namekey = @"name";
/*******************************首頁****************************/
const,static,extern用法總結
const應用 一 對於基本宣告 const int r 100 標準const變數宣告加初始化,編譯器經過型別檢查後直接用100在編譯時替換。二 對於指標 1.int x 10 const int r x 指標指向的內容是常量,r指向的內容不能夠通過r改變,但如果是非const,內容可以通過自己改...
Linq 去重簡介
說到去重首先想到的便是distinct,但是也不是所有地方都適用。下面就講乙個不適用的場景,並給出解決方案。var list await query.getall asnotracking select x x.provincecode distinct tolistasync 這段 獲取 prov...
海量資料去重之SimHash演算法簡介和應用
simhash是什麼 simhash是google在2007年發表的 detecting near duplicates for web crawling 中提到的一種指紋生成演算法或者叫指紋提取演算法,被google廣泛應用在億級的網頁去重的job中,作為locality sensitive ha...