使用我自己的类,我通常会覆盖 - (NSString*)描述方法以简化调试.但是,当我调用我实现的类的描述时,从我的其他类中调用递归描述方法,来自"更深"类的所有格式化字符都被转义.这使得任何漂亮的打印都难以实现.这是一个让它更清晰的例子:
@interface Foo {
NSArray *barsArray;
}
@end
@implementation Foo
- (NSString *)description {
return [NSString stringWithFormat: @"foo contents: %@", barsArray];
}
@interface Bar {
NSString *s1;
NSString *s2;
}
@implementation Bar
- (NSString *)description {
return [NSString stringWithFormat: @"s1: %@\ns2: %@", s1, s2];
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,来自B类描述的\n换行符将在A类描述方法的输出中被转义.任何想法如何摆脱或规避这种行为?打印全部包含集合的嵌套类时尤其烦人.
您始终可以利用标准容器附带的良好格式。例如,您的酒吧描述可以是:
- (id)containerDescription {
return [NSDictionary dictionaryWithObjectsAndKeys:s1, @"s1", s2, @"s2", nil];
}
- (NSString *)description {
return [self.containerDescription description];
Run Code Online (Sandbox Code Playgroud)
您现在可以对 Foo 执行以下操作:
- (NSString *)description {
NSArray *desc = [barsArray valueForKey:@"containerDescription"];
NSDictionary *descriptionDictionary =
[NSDictionary dictionaryWithObjectsAndKeys:desc, @"foo contents", nil];
return [descriptionDictionary description];
}
Run Code Online (Sandbox Code Playgroud)
当然,该解决方案并不是最佳的,因为您必须有第二种方法,并且必须在更高级别上调用 containerDescription,但这是我发现的唯一一个。
归档时间: |
|
查看次数: |
1894 次 |
最近记录: |