我的问题可能很简单。 我有一个自定义写入指定的初始化程序,它获取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?
答案 0 :(得分:0)
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