6

いくつかの定数を、いくつかの異なる viewController および NSObject クラス atm にコード化しています。私の職場の男の 1 人は、それらを独自のクラス (つまり、定数クラス) に入れる必要があると言いました。

私は、このタイプの設計の長所と短所が何であるか、また、それを行うべきかどうか、それを行う方法についての明確化が素晴らしいかどうか疑問に思っています.

たとえば、新しい NSObject クラスを作成して、その中にたくさんの #define を入れるだけですか? 次に、それらを使用する必要がある場合、定数クラスをサブクラス化し、このクラス内の定数を、別のクラスの他のメソッドまたは変数と同じように使用しますか?

すなわち

myclass.theConstant

どんな助けでも大歓迎です。

4

2 に答える 2

11

それらを使用するものに定数を入れます。グローバルな「すべての定数」ファイルを作成しないでください。これにより、コードの再利用が大きな頭痛の種になります。たとえば、通知を投稿する場合、通知名の文字列が必要です。したがって、通知を投稿するクラスにそれを入れます。

.h
extern NSString * const MYObjectDidSomethingNotification;

.m
NSString * const MYObjectDidSomethingNotification = @"MYObjectDidSomethingNotification";

通常、定数はメソッドや定義ではありません。それらは上記のような一定のグローバルです。可能な限り #define を避けるべきですが、非常に便利な場所がいくつかあります (UIColorそうしないと初期化するのが面倒な定数オブジェクトなど)。

Apple ヘッダー ファイルで少し時間をかけて、例を確認してください。UIWindow.h、UITableViewCell.h、および UITableView.h を調べて、定数が一般的にどのように定義されているかを示すいくつかの良い例を確認してください。

于 2012-04-22T22:53:39.873 に答える
0

持っ#definesているだけの場合は、クラスに含める必要はありません。独自の .h ファイルに貼り付けてください。

于 2012-04-22T22:50:27.133 に答える