4

次のようなメソッドを書く必要があります。

-(void)doStuff:(int)options;

次のような typedef 列挙型に基づいています。

typedef enum
{
    FirstOption,
    SecondOption,
    ThirdOption
} MyOptions

この方法でメソッドを呼び出せるようにするために必要なこと (つまり、複数のオプションを「有効」にしてメソッドを呼び出す:

[self doStuff:(FirstOption | ThirdOption)];

別の方法でセットアップする必要がありますtypedef enumか? そして、メソッドで受け取ったオプションを簡単に確認するにはどうすればよいif (options == ...)ですか?

4

2 に答える 2

1

私は Obj-C の専門家ではありませんが、他の言語ではフラグを使用します。各値が 2 の累乗である場合、その値に対して設定されるビットは 1 つだけです。そのビットを特定のオプションのブール値として使用できます。

FirstOption = 1
SecondOption = 2
ThirdOption = 4

FirstAndThird = FirstOption | ThirdOption; // Binary Or sets the bits

// Binary And checks the bits
IsFirst = FirstAndThird & FirstOption == FirstOption; // is true
IsSecond = FirstAndThird & SecondOption == SecondOption; // is false
IsThird = FirstAndThird & ThirdOption == ThirdOption; // is true

この質問も役に立つかもしれません。

于 2012-07-26T14:37:18.960 に答える