2011-02-07 7 views
0

私はobjcにオプションのnumerを取るパラメータを使ってメソッドを記述しようとしています。 UIViewのautoreziseプロパティと似ています。それとも、この1:次のようなパラメータを使用してメソッドを作成する方法:[オブジェクト呼び出し:(TypeOne | TypeTwo | TypeThree)];

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

例:

[object call:(TypeOne | TypeTwo | TypeThree)]; 

私の推測では、このような列挙型取り方法を定義することです:

- (void)call:(EnumType)type; 

をしかし、その後、私はどのように考えています「タイプ」に作用する。 if文を使用できますか?

答えて

3

は、それは

typedef enum { 
    UIRemoteNotificationTypeNone = 0, 
    UIRemoteNotificationTypeBadge = 1 << 0, 
    UIRemoteNotificationTypeSound = 1 << 1, 
    UIRemoteNotificationTypeAlert = 1 << 2 
} UIRemoteNotificationType; 

関連するタイプがあるとして宣言されています。したがって、はい- (void)call:(EnumType)type;が正しいです。

これに対処する:enum型は多くの点でintのように動作します。比較、切り替えなどが可能です。

0

switchステートメントを書くことができます。識別子の列挙は、から始まり、デフォルトでとなることを覚えておいてください。列挙識別子の値に基づいてcase文を記述します。

1

&演算子使用、ジャスティンによって示唆ビットフィールドの値をテストする:これは等TypeOne、TypeTwoを動作させるため

if (type & TypeOne) 
    // TypeOne bit is set 

は、厳密に1つのビットの残りを1に設定した整数でなければなりませんビットを0に設定します。

関連する問題