我有一本字典。我提取其中一个值如下:
NSString *magicValue= [filterDict valueForKey:[filterDict allKeys][0]];
[SomeClass foo: magicValue];
而 foo 是:
- (void)foo:(NSString*)magicValue
{
NSLog("magicValue is string:%@",[magic isKindOfClass:[NSString class]] ? @"YES" : @"NO");
NSLog("magicValue is number:%@",[magic isKindOfClass:[NSNumber class]] ? @"YES" : @"NO");
}
如果字典值为数字,magicValue 将为NSNumber
. 所以定义的字符串指针将指向一个NSNumber
. 日志将返回 yes 进行号码检查。
我从未对此类方法添加保护,以检查“magicValue”是什么类。我假设当我定义一个带有字符串参数的方法时,它将是字符串。
我应该开始考虑这种行为并始终添加检查,还是以这种方式将该字典值分配给魔法并使用我的方法的人的错。我需要一些最佳实践建议以及如何处理。
这个问题可能已经回答了,但我不知道如何搜索。