作者:周輝
All rights reserved.
多用類型常量读整,少用 #define 預(yù)處理指令
const
const最好理解咱娶,修飾的東西不能被修改
指針類型根據(jù)位置的不同可以理解成3種情況:
- 常量指針
// 初始化之后不能賦值强品,指向的對象可以是任意對象,對象可變的榛。
NSString *const pt1;
- 指向常量的指針
// 初始化之后可以賦值,即指向別的常量夫晌,指針本身的值可以修改,指向的值不能修改
const NSString *pt2;
- 指向常量的常量指針
const NSString * const pt3;
extern
全局變量的定義
//x .h 聲明
extern const NSString *AA;
//x .m 定義
const NSString *AA = @"abc";
// 調(diào)用
#import "x.h"
// 或者再次申明
extern const NSString *AA;
static
static 關(guān)鍵字對變量的作用域進(jìn)行了限制晓淀,使得變量僅在源文件內(nèi)有效。
static 與 const 結(jié)合
- static與const作用:聲明一個只讀的靜態(tài)變量
- 在一個文件中經(jīng)常使用的字符串常量盏档,可以使用static與const組合
- 開發(fā)中常用static修飾全局變量,只改變作用域
- 為什么要改變?nèi)肿兞孔饔糜颍?/li>
- 防止重復(fù)聲明全局變量
- 開發(fā)中聲明的全局變量,有些不希望外界改動蜈亩,只允許讀取
// 聲明一個靜態(tài)的全局只讀常量
static const int a = 20;
- static和const聯(lián)合的作用:聲明一個靜態(tài)的全局只讀常量
- iOS中staic和const常用使用場景,是用來代替宏稚配,把一個經(jīng)常使用的字符串常量,定義成靜態(tài)全局只讀變量
// 開發(fā)中經(jīng)常拿到key修改值药有,因此用const修飾key,表示key只讀,不允許修改
static NSString * const key = @"name";
// 如果 const修飾 *key1,表示*key1只讀愤惰,key1還是能改變
static NSString const *key1 = @"name";
- 如果一個變量既聲明為static苇经,又聲明為const宦言,那么編譯器根本不會創(chuàng)建符號,而是會向#define預(yù)處理指令一樣奠旺,把所有遇到的變量都替換為常值。
- 用此方法定義的常量帶有類型信息响疚。
一般用法
// FCAnimatedView.h
#import <UIKit/UIKit.h>
@interface FCAnimatedView : UIView
- (void)animate;
@end
// FCAnimatedView.m
#import "FCAnimatedView.h"
static const NSTimeInterval kAnimationDuration = 0.3;
@implementation FCAnimatedView
- (void)animate {
[UIViewanimateWithDuration:kAnimationDuration
animations:^() {
// Perform animations
}];
}