UIKitフレームワークヘッダーファイルをブラウズしています。匿名の列挙型が定義されていて、一見関連のあるtypedefが続きます。誰かがここで何が起こっているのか説明できますか?iOSフレームワーククラスのCのenum定義
UIViewAutoresizing
タイプは、何らかの形で(暗黙のうちに)前のステートメントで宣言された列挙型を参照していますか?その列挙型をどのように参照しますか?
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;
したがって、匿名列挙型は定数値(#defineに似ています)の記号名のみを宣言しており、typedefは命名規則(UIViewAutoresizing___)のみによって列挙型に関連していますか?私はそれが意味をなさないと思う。 – Keith
@Keith:はい、それは正しい。列挙型に正しい型を渡すコンパイラの施行は、これらのケースでは望ましくなく、直感的ではありません。それが望まれた場合、Appleはtypedefed enumを使用します。 – JustSid