黑马程序员技术交流社区
标题: description 方法的重写 [打印本页]
作者: 泥娃娃 时间: 2016-3-21 09:52
标题: description 方法的重写
14.description 以%@格式打印对象名的时候(NSLog(@“%@”,实例对象名)),调用的是description,默认打印出的结果是对象的地址<Dog: 地址内容>
此处可以重写方法(父类的)
重写description对象方法:
-(NSString *)description{
NSString *str =[NSString stringWithFormat: @"年龄:%d,颜色:%d",_age,_color];//_age,_color是类的属性
return str;
或者
return [NSString stringWithFormat: @"年龄:%d,颜色:%d",_age,_color];
}
重写description类方法
+(NSString *)description{
//在类方法中不能访问实例变量,因此,下面这句话是错误的
// return [NSString stringWithFormat: @"年龄:%d,颜色:%d",_age,_color];
return @"这是类方法";
}
调用description类方法
NSLog(@“%@”,[p class]);
注意:千万不要在description方法中同时使用%@和self . 同时使用等于调用了self的description ,因此导致陷入死循环。
作者: muzipiao 时间: 2016-3-21 10:31
+(NSString *)description
-(NSString *)description
重写类方法和对象方法都有什么用?
会重写,但是搞不明白用途
作者: 泥娃娃 时间: 2016-3-21 16:45
我觉得要从创建对象的理解开始说起,比如理解方式1:定义了一个Car类型的指针,指向了一个新申请的内存空间
理解方式2:用Car类实例化一个实例对象,对象名为car。
对于第二种理解方式,如果打印对象名,想得到对象的属性,因此有了重写description的出现。让打印对象名时输出的是对象的属性。而程序默认的是指针的地址
作者: muzipiao 时间: 2016-3-22 09:15
谢谢,那类的方法呢,还没有创建对象实例,类的description有什么用?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |