如何获得 id
对象的最佳字符串表示?
以下是否正确?有没有更简单的方法?
id value;
NSString* valueString = nil;
if ([value isKindOfClass:[NSString class]]) {
valueString = value;
} else if ([value respondsToSelector:@selector(stringValue)]) {
valueString = [value stringValue];
} else if ([value respondsToSelector:@selector(description)]) {
valueString = [value description];
}
最佳答案
description
方法是 NSObject
protocol 的一部分,所以 Cocoa 中的任何对象都会响应它;因此,您可以发送 description
:
for( id obj in heterogeneousCollection ){
[obj description];
}
此外,
NSLog()
会将 description
发送到作为参数传递给 %@
说明符的任何对象。请注意,您不应将此方法用于日志记录/调试以外的目的。也就是说,您不应该依赖于在框架版本之间具有特定格式的框架类的描述,而应该开始做诸如基于另一个描述字符串构造对象之类的事情。