您的位置:首页 > 职场人生

黑马程序员-description的重写

2015-10-23 05:16 471 查看
OC中NSlog方法除了可以输出基本数据类型,NSLog函数还可以输出任何OC对象。

如果我们使用NSlog来打印一个对象,比如:

这时候的输出是:<People: 0x100201f50>,此时输出调用了父类,也就是NSObject的description方法,如果我们想要让他能够正确的输出我们所需要的内容的话,我们可以在People类中重写父类中的description方法。

比如:

这时候的输出是:姓名是:xingm 这就是我们想要的结果。

在重写description的过程中要特别注意,NSObject中有两个description方法,一个类方法,一个对象方法,如果我们把刚才代码中重写description的-变为+,那么就会出错,因为在类方法中是无法访问成员变量的。

而类方法description重写之后,我们修改代码,将输出变为[p class],我们可以看到,输出是:leiming。不再是people。代码如下:

最后我们需要特别注意的是:

千万不要在description方法中同时使用%@和self,下面的写法是错误的:

-(NSString *) description{

return [NSString
stringWithFormat:@"姓名是%@",self];
}
第2行同时使用了%@和self,代表要调用self的description方法,因此最终会导致程序陷入死循环,循环调用description方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: