博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC之description
阅读量:6119 次
发布时间:2019-06-21

本文共 981 字,大约阅读时间需要 3 分钟。

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

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];

转载地址:http://cvqka.baihongyu.com/

你可能感兴趣的文章
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
ABP实战--集成Ladp/AD认证
查看>>
存储过程
查看>>
phpcms v9栏目列表调用每一篇文章内容方法
查看>>
python 自定义信号处理器
查看>>
luov之SMTP报错详解
查看>>
软件概要设计做什么,怎么做
查看>>
dwr
查看>>
java的特殊符号
查看>>
word2010中去掉红色波浪线的方法
查看>>
fabric上下文管理器(context mangers)
查看>>
JQuery-EasyUI Datagrid数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
查看>>
并发和并行的区别
查看>>
php小知识
查看>>
Windows下安装、运行Lua
查看>>