2011-11-04 71 views
0

我有一個非常小的輕量級應用程序,它需要使用一些存儲在較大框架中的常量。我不想複製這些常量並將它們硬編碼到輕量級應用程序中,但我也不希望鏈接到大型框架以獲取常量。#define vs const並鏈接框架

常量是在頭文件中使用static NSString *const定義的。用#define替換static NSString *const是否阻止我必須鏈接整個框架?

說實話,我不是很確定我是如何連接的作品所以也許在想這個錯誤

+2

如果框架切換爲這些常量的'#define',則它不能再改變它們。只要它們是實際的符號,框架作者就可以自由地更改這些值,因爲應用程序會在運行時提取當前值。但是'#define'在編譯時烘焙了這個值。無論你使用哪一個,都取決於你對此的關心程度。 –

+0

沒關係,這些值不應該改變太多 – JPC

+1

爲什麼你想避免鏈接到框架?如果你擔心可執行文件的大小,鏈接器會去掉框架中沒有引用的任何符號,所以你只能使用你需要的。 –

回答

1

是的,如果你#定義常量,你只需要#IMPORT .h文件包含他們。

您確實需要知道,#defined常量是文本文本替換 - 它們沒有「type」等,正如靜態常量值一樣。

但是另一個選項(僅適用於整數常量)是在.h文件中定義C-style enums

+0

謝謝,我在這裏讀了很多帖子,說const更好,所以我想確保在使用#define之前。我也需要字符串,所以我不能使用枚舉 – JPC

+2

#defines當然被編程精英認爲是有些行人,但是真的基於C的語言沒有提供很多選項,所以你必須處理什麼是可行的。 –