本帖最后由 wangchao1992 于 2015-8-15 17:51 编辑
需求:当我们以%@格式打印 对象的时候,输出对象的所有的属性信息,就可以使用description方法
description方法NSObject父类里已经有了,我们只需要把它重写就可以使用。
description方法 有类方法和对象方法。满足需求只能使用对象方法。
description陷阱; 千万不要在description方法中同时使用%@和self。
使用方法
Dog *d = [Dog new];
[d setAge:3];
d->_color = 1;
//查看对象地址
NSLog(@"\n d = %p",d);
//类名 对象的地址
//需求:
//当我们以%@格式打印 对象的时候,输出对象的所有的属性信息
NSLog(@"\n%@",d); //打印d的对象
//当我们以%@的格式,打印了对象d,此时调用了对象的description方法
//对象中如果没有重写父类的description方法,则调用父类的
//打印类的信息
//打印类
//[d class]; ---->Dog
//以%@的形式,打印类信息
NSLog(@"\n%@ ",[d class]);
@implementation Dog
-(void)setAge:(int)age{
_age = age;
}
-(int)age{
return _age;
}
-(void)run{
NSLog(@"狗在跑");
}
//重写父类的description
-(NSString *)description{
return [NSString stringWithFormat:@"年龄:%d,颜色:%d",_age,_color];
}
//重写description的类方法
+(NSString *)description{
//在类方法中不能访问实例变量,所以下面的写法是错误的
// return [NSString stringWithFormat:@"年龄:%d,颜色:%d",_age,_color];
return @"这是类方法";
}
@end
|
|