OC之description

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

NSString *name = @”haha”;orm

NSLog(@”%@”,name);对象

输出结果为:hahaip

好比:内存

Person *p = [[Person alloc]init];字符串

p.age = 20;string

p.name = @”jack”;it

NSLog(@”%@”,p);io

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

默认状况下,除字符串对象外,使用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];

相关文章