【发布时间】:2012-10-20 17:25:08
【问题描述】:
我有一个具有两个属性的对象 - type 和 name - 我想在其 description 中显示。开箱即用的描述如下所示:
<SGBMessage: 0x7663bb0>
如果我覆盖description,像这样:
return [NSString stringWithFormat:@"<%@: %x type:%@ name%@>",
[self class], (int)self, self.type, self.name];
然后我可以得到这样一个很好的描述:
<SGBMessage: 0x7663bb0 type:loadScreen name:mainScreen>
到目前为止,一切都很好。但是苹果的对象有动态描述;如果我查看视图的描述,我会得到以下信息:
<UIView: 0x767bcb0; frame = (0 0; 0 0); layer = <CALayer: 0x767bd50>>
但如果我将 hidden 设置为 true,我会得到:
<UIView: 0x767bcb0; frame = (0 0; 0 0); hidden = YES;
layer = <CALayer: 0x767bd50>>
现在,我完全不相信他们所有对象的 description 方法中都有大量 if 语句;似乎更有可能在 NSObject 的某个类别中的某个类别中有一些方法可以被覆盖以指定在描述中显示哪些属性。有谁知道到底发生了什么,如果知道,我可以利用它吗?
【问题讨论】:
标签: objective-c