PS:经过之类重写description方法后,个人感觉有点像C#中的ToString();方法

一、description方法的作用:(输出所有的OC对象都用%@)

1、默认情况下(不重写description方法时)对象的输出信息是:<类名:  地址名> 例:<Person: 0x7fedc9c09720>

2、NSLog(@"Person对象:%@",p);--原理:会调用对象的-description方法,并且把-description方法返回的OC字符串输出的屏幕上

  请区分一下三者区别:

  1)直接输出某个对象的地址:

  Person *p = [Person new];

  NSLog(@"%p",p);

  2)输出指针变量的地址:NSLog(@"%p",&p);

  3)直接输出整个对象:NSLog(@"%@",p);

  默认输出是:<类名:  对象的内存地址>

  改变默认输出的方式:重写-description方法,返回自己想输出的内容

二、代码实例:

 #import <Foundation/Foundation.h>

 // Person的声明
@interface Person : NSObject
{
int _age;
} - (void) setAge:(int)age;
- (int) age; @end // Person的实现
@implementation Person - (void) setAge:(int)age
{
_age = age;
} - (int) age
{
return _age;
} //重写父类-description方法,利用NSString类的类方法stringWithFormat方法拼接字符串
//使得重写的-description方法返回自己想要的内容
- (NSString *) description
{
return [NSString stringWithFormat:@"age=%d", _age];
} @end int main()
{
Person *p = [Person new];
[p setAge:]; // 输出所有的OC对象都用%@
// 默认情况下对象的输出信息:<Person: 0x7fedc9c09720>
// 类名 + 对象的内存地址 // 给指针变量p所指向的对象发送一条-description消息
// 会调用对象的-description方法,并且把-description方法返回的OC字符串输出到屏幕上
NSLog(@"Person对象:%@", p);
/*
// 指针变量p的地址
NSLog(@"指针变量p的地址:%p", &p);
// 对象的地址
NSLog(@"这个Person对象的地址:%p", p);
*/
return ;
}

OC基础--description方法的更多相关文章

  1. OC基础之方法和参数的命名规范

    以前学过C/C++/Java/C#语言的童鞋可能刚开始对于OC的方法和参数的命名规范大为不爽 举例来说,如下一个OC方法: - (void)tableView:(UITableView *)table ...

  2. 四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法

    四.OC基础--1.文档安装和方法重载, 1. 在线安装 xcode-> 系统偏好设置->DownLoads->Doucument->下载 2. 离线安装 百度xcode文档 ...

  3. OC 初识NSString,self关键字,继承,成员变量的可见性,description方法

    OC 初识NSString,self关键字,继承,成员变量的可见性,description方法 初识 NSString: char * string = "旭宝爱吃鱼"; 常量字符 ...

  4. OC基础4:类和方法

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.类的声明(@interface)要放在 ...

  5. OC语法4——自定义构造方法,description方法

    自定义构造方法: 我们已经知道创建对象分两步,1:在内存中开辟存储空间,并把地址存储在指针变量里,2:调用指针变量的初始化方法init初始化该对象. Student * stu = [Student ...

  6. OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法

    一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...

  7. [Objective-c 基础 - 2.10] description方法

    A. 实例对象打印-description 1.当使用NSLog函数并且使用%@占位符的时候,会调用对象的-description方法 2.拿到-description的返回值,显示到console中 ...

  8. OC中对象的description方法

    周所周知,我们在做项目时, 可以在类的.m文件中重写该类的对象的描述description方法: 示例: -(NSString *)description{    NSString *str = [N ...

  9. 语言基础之description方法

    1.description方法的一般用处 1: // 指针变量的地址 2: NSLog(@"%p", &p); 3: // 对象的地址 4: NSLog(@"%p ...

随机推荐

  1. 边工作边刷题:70天一遍leetcode: day 70

    Design Phone Directory 要点:坑爹的一题,扩展的话类似LRU,但是本题的accept解直接一个set搞定 https://repl.it/Cu0j # Design a Phon ...

  2. fullpage.js 结合固定导航栏—实现定位导航栏

    开始制作自己的个人简历啦,决定要使用固定导航栏,又打算使用fullpage.js做全屏滚动. 仔细看了fullpage文档之后,发现不用额外写js代码就可以实现以下效果: 1.当滚动翻页时,导航栏也自 ...

  3. AOJ 740 求和

      链接:http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=740   Description 对于正整数n,k,我们定义这样一个函数f,它满足如下规律f(n,k=1 ...

  4. sublime Text 2 安装Sublime Package Control

    Sublime Text 2 安装 Sublime Package Control,通过 Sublime Package Control,安装.升级和卸载 Package. 安装 Package Co ...

  5. python中的自测语句是什么?

    if __name__ == '__main__': main() 以上

  6. You are note Hk

    直接打开是forbidden  最后一句话提示 于是改包 第二次还是修改包 Mozilla/5.0 (MSIE 7.0; Windows NT 6.0;.NET CLR 9.9)

  7. app:transformClassesWithJarMergingForDebug uplicate entry: android/support/v4/app/BackStackState$1.class

    .Execution failed for task ':app:transformClassesWithJarMergingForDebug'.> com.android.build.api. ...

  8. NSProgress

    苹果公司在 iOS 7 and OS X 10.9引入NSProgress类,目标是建立一个标准的机制用来报告长时间运行的任务的进度.NSProgress引入之后,其最重要的作用是可以在一个app的多 ...

  9. 08SpringMvc_(1)继承AbstractCommandController的Action[能够以实体的形式,收集客户端参数].(2)日期转换器和编码过滤器

    上一篇文章说过要介绍两个控制器.这篇文章就介绍第二个控制器AbstractCommandController(这个类已经快要被废弃了,有更好的代替者,但还是要好好学这个类).这个控制器的额作用是为了收 ...

  10. struts2中简单的文件上传

    2016-08-31 一.       文件上传 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multip ...