天天看點

Objective-c #define 和 static const

開發情景:如果要定義一個動畫時間持續時長

方式一:#define ANIMATION_DURATION 0.3

說明:上述的預處理指令會把源代碼中的 ANIMATION_DURATION 字元串替換成 0.3 ,這樣可以實作常量的定義,但這樣定義的常量,沒有類型資訊,動畫的持續      時長應該是NSTimeInterval類型,此處預處理過程會把碰到所有的 ANIMATION_DURATION 一律換成 0.3 ,假設此指令聲明在某個頭檔案中,那麼所有引入     這個頭檔案的代碼,其ANIMATION_DURATION都會被替換為0.3,這樣顯然不夠好。

方式二(推薦):static const NSTimeInterval kAnimationDuration = 0.3

說明:這種方式定義的常量包含了類型資訊,清除的描述了常量的含義,如果常量多的話,清晰明了不會亂

使用注意:如果隻在檔案内使用—在命名前加k

                  如果在類之外使用—就用類名最為字首

                  盡量不要在.h檔案中定義常量,在.m檔案中定義

                  定義的變量要同時使用static和const來聲明(const表示不能修改聲明的變量,如果改名就會報錯;static表示該變量僅在所在的.m檔案中可見,如果不加           static,編譯器會為它建立一個“外部符号”,如果其他檔案重名的話就會報錯)

iOS