【发布时间】:2010-10-02 21:37:42
【问题描述】:
发送消息并希望对象响应,或者检查它是否响应选择器并在没有响应时进行某种回退是否是“更好的方式”。
例如:
- (NSString *)stringForObjectValue:(id)obj {
if ([obj respondsToSelector:@selector(intValue)]) {
NSString *roman = [self formatRomanNumber:[obj intValue] resultSoFar:@""];
return roman;
} else {
return [NSString stringWithFormat:@"can't format a %@", [obj class]];
}
}
对比
- (NSString *)stringForObjectValue:(id)obj {
NSString *roman = format_roman(@"", [obj intValue]);
return roman;
}
(示例来自 NSNumberFormatter 子类...但它可能来自 NSObjectFormatter 子类...)
【问题讨论】: