黑马程序员技术交流社区

标题: OC-description方法重写 [打印本页]

作者: wangchao1992    时间: 2015-8-15 17:44
标题: OC-description方法重写
本帖最后由 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


作者: 15132876050    时间: 2015-8-15 22:04
嗯嗯   不错  收藏了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2