OC之description

打印对象用%@,比如打印字符串对象:

NSString *name = @”haha”;

NSLog(@”%@”,name);

输出结果为:haha

比如:

Person *p = [[Person alloc]init];

p.age = 20;

p.name = @”jack”;

NSLog(@”%@”,p);

会打印出对象p的所属类和内存地址。比如:<Person 0x100109e60>

默认情况下,除字符串对象外,使用NSLog和%@打印对象的结果都是<类名 对象所在内存地址>。使用NSLog和%@打印对象的步骤如下:

1.调用对象p-description方法

2.拿到-description方法的返回值(NSString*)显示到屏幕上

3.-description方法默认返回的是“类名+内存地址”

在必要情况下,我们需要重写description方法以达到改变输出结果目的,比如上述代码,_age和_name为成员变量,现在我们改写description方法:

@implementationPerson

—   (NSString *)description

{

return [NSString stringWithFormat:@”age= %dname =%@”,_age,_name];

}

@end

之后再调用NSLog(@”%@”,p)时输出结果不再是<Person 0x100109e60>而是age = 20name =jack

注意,上面重写的是“-”开头的description,还有一个以“+”开头的description,“+”开头的description决定的是类对象的输出结果,“-”开头的description决定的是实例对象的输出结果。

Class c = [Person class];

    // 1.会调用类的+description方法

    // 2.拿到+description方法的返回值(NSString *)显示到屏幕上

NSLog(@"%@", c);

输出结果为:Person

当然也可以像重写“-”开头的description一样去重写它。

【备注】类也是对象,任何类都是Class的对象,获得类对象(和类对象不是同一个概念)的方法为Class c = [Person class];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值