1

私はちょっと好きenumsです。それらの構文は難解に見えます、そして私はそれらの紛れもなく適切な使用法についての決定的な参照点をまだ見つけていません..しかし私が持っていたとしましょう..

typedef enum {
    OrientTop,
    OrientBottom,
    OrientFiesta
}   Orient;

たとえば、複数の選択が適用可能/必要な場合に他の定数を使用する場合と同様に、できるようにしたいと思います。ただ実行してください…</ p>

 self.orientation = OrientTop | OrientFiesta;  // NO NO WORK-O!

と同じように…</p>

self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;

またはまた..

it = [[NSThing alloc]initOptions: NSStupid | NSSpicy | NSSassy];

そしてそれもいいでしょう..代わりに…</p>

 if ((o == OrientTop ) || ( o == OrientBottom))

私はただ使うことができました…</p>

if (o == OrientTop || OrientBottom) 

そして最も重要なのは…複数のケースをチェックする方法です。

switch (orientation) {
    case OrientTop | OrientBottom:

または何か、ある種の..うーん 、ああ..あなたたちは遅すぎる..だから、ええと..私はただする必要があります... </ p>

case OrientLeft:
case OrientRight:  { // blah blah blah
     break;        }

(しかし、最初の部分については..)アップル/私より賢い人々が私typedefの味をそうする余分な熱を与えるために使用している余分な「秘密のソース」は何ですか、ech..bland..比較して?

4

1 に答える 1

3

typedefのようなものは実際にはビットマスクであるかのように見えNSViewWidthSizableます。これにより、非常に楽しいORing操作が可能になります。いくつかのUIKit要素のヘッダーで、私が何を意味するかを見ることができます:

enum {
    UIViewAutoresizingNone                 = 0,
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
    UIViewAutoresizingFlexibleWidth        = 1 << 1,
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
    UIViewAutoresizingFlexibleHeight       = 1 << 4,
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;

詳細を説明している非常に役立つサイトからすぐにそれを取得しましたが、を保持することで定数の列挙を調べることもできますCommand ⌘</kbd> and clicking the constant or typedef.

于 2012-07-30T18:51:03.250 に答える