2012-04-19 9 views
1

私は自分のライブラリを持っています。また、ヘッダーには多くの定数が定義されています(アニメーションの長さなど)。しかし、私のヘッダーはすべて見えて、変更可能です。他の人がデフォルト値を変更しないようにするにはどうすればよいですか?静的ライブラリで定義した定数を非表示にする方法は?

このようなアップルのライブラリのヘッダ内のいくつかのconst値があります。

CA_EXTERN NSStringの* constのkCATransitionMoveIn __OSX_AVAILABLE_STARTING(__MAC_10_5、__IPHONE_2_0)は、

+0

人々がコードを変更すると判断された場合、そのコードの動作がわかります。それほど大したことはありません。しかし、偶発的な変化や副作用を制限するために、私の答えを見てください。 –

答えて

3

Objective-Cは依然としてCです。古いシステムには問題がある可能性があります。そのため、そこにマクロが表示されることがあります。とにかく、組み込み型であれば安全です。

"extern"として何かを宣言すると、コンパイラは "OK、誰かが宣言して外部のものを参照しているのを見ていますが、何かを知る必要はありません。

この段落は私のC警察とのトラブルにつながりますが、実用的な説明のためには十分に近いので、ヘッダーファイルでこれを行うことができます。

extern int const TheAnswerToLifeTheUniverseAndEverything; 

そして、実装ファイルの1つ(@ implementation/@ endセクションの外)...

int const TheAnswerToLifeTheUniverseAndEverything = 42; 

「最新の」Xcodeバージョンでは、オブジェクトで同じことを行うことができます。 "const"に注意してください。これは、定数ポインタからNSStringへのポインタを持つことを意味します。

// In header 
extern NSString * const TheAnswerToLifeTheUniverseAndEverythingString; 

// In source 
NSString * const TheAnswerToLifeTheUniverseAndEverythingString = @"42";