0

私の質問はおそらく非常に簡単に答えることができます。BOOL パラメーターを取得するカスタム作成指定イニシャライザーがあります。

その中で、渡された BOOL などがあるかどうかを確認したいと思います。それ以外の場合は、例外を発生させたいと思います。

また、デフォルトの init をオーバーライドして、super を呼び出す代わりに、指定された初期化子を指すようにし、指定された初期化子を使用していないときにユーザーが適切な例外を取得できるように、そこに nil を渡します。

-(id)init
{
  return [self initWithFlag:nil];
} 


-(id)initWithFlag:(BOOL)flag
{
    //get the super self bla bla

    if (flag IS-NOT-A-BOOL)
    {
        //raising exception here
    }
    //store the flag

    return self;
}

IS-NOT-A-BOOL の代わりに何が必要ですか?

4

1 に答える 1

0

オブジェクティブ c の BOOL は、YES または NO のいずれかの結果になる可能性があり、すべてがそれらの値のいずれかにキャストされます。ブール値を含むNSNumberを使用するのはどうですか? お気に入り:

 -(id)initWithFlag:(NSNumber *)flag
{
    //get the super self bla bla

    if (!flag) // Check whether not nil
    {
        //raising exception here
        [NSException raise:@"You must pass a flag" format:@"flag is invalid"];
    }
    //store the flag
    BOOL flagValue = [flag boolValue];

    return self;
}

この場合、次のようにメソッドを呼び出すことができます

[self initWithFlag:@YES]; // or @NO, anyway, it won't throw an exception

またはこれ

[self initWithFlag:nil]; // it will throw an exception
于 2013-05-01T14:10:01.237 に答える