修飾常量:
void testConst()
{
const int age1 = 20;
int const age2 = 30;
}
當是這種情況的時候:效果是一樣的,這個時候 age1\age2是常量, 只讀
當修飾指針的時候,分情況
就近原則 靠近誰 誰就相當於常量 不可重新賦值或者重新指向
void testConst2()
{
int age = 20;
// const的修飾的*p1和*p2,*p1和*p2是常量,不能通過p1、p2指針間接修改其他變量的值
const int *p1 = &age;
int const *p2 = &age;
int num = 30;
p1 = #
p2 = #
// const修飾的p3,p3是個常量,p3不能再指向其他變量
int * const p3 = &age;
// 寫法錯誤
// int num = 30;
// p3 = #
// 寫法正確
// *p3 = 30;
}
const的修飾的*p1和*p2,*p1和*p2是常量,不能通過p1、p2指針間接修改其他變量的值
那麼我們在項目中,應該怎麼使用呢?
我們定義一個類 :比如這個類中是我們項目中的一些數據
ZYConst.h文件中:
#import
// 通知
// 表情選中的通知
extern NSString * const ZYEmotionDidSelectNotification;
extern NSString * const ZYSelectEmotionKey;
// 刪除文字的通知
extern NSString * const ZYEmotionDidDeleteNotification;
ZYConst.m中:
#import
// 通知
// 表情選中的通知
NSString * const ZYEmotionDidSelectNotification = @"ZYEmotionDidSelectNotification";
NSString * const ZYSelectEmotionKey = @"ZYSelectEmotionKey";
// 刪除文字的通知
NSString * const ZYEmotionDidDeleteNotification = @"ZYEmotionDidDeleteNotification";
那我們在pch中,直接導入這個ZYConst文件就可以了
#import "ZYConst.h"
那麼整個項目中,就有了我們在這個類中定義的一些變量
好處:
使用const修飾的,在內存中就只有一份,那麼無論你在項目中的哪裡使用,都是這一份,所以強烈推薦使用 使用宏的話:宏是在編譯的時候 將我們定義的宏的內容,直接編譯成我們寫的字符串,那麼可能存在多次創建,多次調用的。
// RGB顏色
#define ZYColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
// 隨機色
#define ZYRandomColor HWColor(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256))
這個時候,就不能使用const,因為const後面接的內容不能是通過一些計算出來的結果,而是一些死的東西。