2012-12-18 38 views
0

使用目標c,我有2個類正在使用硬件,並寫在c +objC。 該項目中的其他類是客觀的c,並且他們創建這些類的實例。常量配置文件到很多類

我的問題。

可以說我有classA.mclassB.m。他們都有一個整數常量,需要是相同的說:const int numOfSamples=7;

我正在尋求最好的解決方案來創建一些配置文件,它將包含所有這些常量變量,A和B都可以看到它們。 我知道一些方法,但我不知道什麼是合適的。

  1. 我在想我是否可以創建一個:configuration.m並將它們寫入它。
  2. 使用保存所有全局變量的singleton文件。

數字1在我看來是最好的,但我應該怎麼做呢?

謝謝。

回答

1

對進場1工作,你需要定義兩個文件:

  1. ,您聲明所有的常量的頭文件;

  2. 一個.m文件,其中您的常量被定義和初始化。

在您的例子:

/* .h file */ 
extern const int numOfSamples; 

/* .m or .c file */ 
const int numOfSamples = 7; 

然後,您在哪裏,你需要這些常量對其他文件的.H頭。注意關鍵字extern,這將聲明變量而不定義;通過這種方式,您可以多次包含.h文件而不會有重複的符號錯誤。

編輯:

我建議的方法是處理在C程序的全局變量的正確方法。

現在,如果全局變量是一件好事,那麼這是一個更長的故事。

一般來說,全局變量是棘手的,與40年的努力背道而馳,致力於在程序中更好地封裝(即信息隱藏)數據和行爲(參見"On the Criteria to Be Used in Decomposing Systems Into Modules",David Parnas,1972)。

爲了進一步解釋這一點,問題的一個方面正如你在評論中提到的那樣:一個模塊更改全局變量值從而影響整個程序行爲的可能性。這被認爲是不好的,會導致無法控制的副作用(在任何非常規的程序中)。

就你而言,我認爲事情有點不同,因爲你在談論「配置」和「常量」的值。這是一個完全不同於一般的情況,我認爲你可以安全地使用const的頭文件來實現這個目標。

這就是說,你知道配置的整個主題是一個巨大的一般。例如,您可能需要機制來即時更改程序配置;在這種情況下,常量變量頭方法是不正確的。或者,您的程序配置可能取決於某個遠程系統的狀態(想象一下:您已登錄而您沒有登錄)。

我不能保證使用頭文件是您的案例的最佳方法,但我希望上述討論和我給你的例子可以幫助你弄清楚。

+0

非常感謝。這是一種「好」的方式,還是「流行」的方式呢?如果它們不是const的,那麼在這種方法中,所有使用它們的類都可以改變它們 - 每個人都會看到這種改變? – Curnelious

+0

請看,我的編輯。 – sergio

+0

非常感謝。這正是我所看到的。所以使用const是一個好方法,因爲你不改變它們,所以不會產生衝突。 – Curnelious

0

我認爲最好的方法是使用plist文件和所有的配置值。

如果您的配置值很少,則可以使用Info.plist文件。