自定义指定初始化程序与BOOL参数和异常?

时间:2013-05-01 14:04:32

标签: ios objective-c cocoa-touch

我的问题可能很简单。 我有一个自定义写入指定的初始化程序,它获取BOOL参数。

在其中,我想检查是否传递了BOOL或其他内容。 如果还有别的,我想提出异常。

我还想覆盖默认初始化并将其指向我指定的初始化程序而不是调用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?

1 个答案:

答案 0 :(得分:0)

目标c中的

BOOL可以导致YES或NO,并且所有内容都将被转换为其中一个值。如何使用包含bool值的 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