gpt4 book ai didi

iphone - 包含集合的嵌套类的 NSObject 描述方法的正确实现

转载 作者:行者123 更新时间:2023-12-03 19:00:40 25 4
gpt4 key购买 nike

对于我自己的类,我通常会重写 -(NSString *)description 方法以简化调试。但是,当对我实现的类调用描述(该类从其他类中递归调用描述方法)时,“更深”类中的所有格式字符都会被转义。这使得任何 pretty-print 都难以实现。这是一个更清楚的例子:

@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];
}

在这种情况下,B 类描述中的\n 换行符将在 A 类描述方法的输出中被转义。知道如何摆脱或规避这种行为吗?当打印全部包含集合的嵌套类时,这尤其烦人。

最佳答案

您始终可以利用标准容器附带的良好格式。例如,您的栏描述可以是:

- (id)containerDescription {
return [NSDictionary dictionaryWithObjectsAndKeys:s1, @"s1", s2, @"s2", nil];
}

- (NSString *)description {
return [self.containerDescription description];

您现在可以在 Foo 上执行以下操作:

- (NSString *)description {
NSArray *desc = [barsArray valueForKey:@"containerDescription"];
NSDictionary *descriptionDictionary =
[NSDictionary dictionaryWithObjectsAndKeys:desc, @"foo contents", nil];
return [descriptionDictionary description];
}

当然,该解决方案不是最佳的,因为您必须有第二种方法,并且必须在更高级别上调用 containerDescription,但这是我发现的唯一一个。

关于iphone - 包含集合的嵌套类的 NSObject 描述方法的正确实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4336760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com