自定义一个Person类

@interface Person : NSObject
{
int _age;
double _height;
double _weight;
NSString *_name;
NSString *_tel;
NSString *_email;
} - (void)setAge:(int)age;
- (void)setHeigth:(double)height;
- (void)setWeight:(double)weight;
- (void)setName:(NSString *)name;
- (void)setTel:(NSString *)tel;
- (void)setEmail:(NSString *)email; - (int)age;
- (double)height;
- (double)weight;
- (NSString *)name;
- (NSString *)tel;
- (NSString *)email;

实现setter和getter,具体不详述了。

如果开发中想打印这个Person类创建出来的对象中的值通常情况是通过NSLog来答应,如下:

int main(int argc, const char * argv[]) {

    // 创建一个新对象并且赋值
Person *p = [Person new];
[p setAge:];
[p setName:@"lnj"];
[p setHeigth:1.75];
[p setWeight:];
[p setTel:@""];
[p setEmail:@"lnj@520it.com"];

  // 一般是通过这样打印,但是如果我们需要经常打印某个类创建出来的对象,每次这么写,就显得有点2了。解决办法就是通过重写这个类的 description这个对象方法来使得打印NSLog(@"%@",p),这样直接调用该方法,每次答应出来的就是我们想要的了。
// NSLog(@"age = %i, name = %@, height = %f, weight = %f, tel = %@, email = %@", [p age], [p name], [p height], [p weight], [p tel], [p email]);
// %@是用来打印对象的, 其实%@的本质是用于打印字符串
// 只要利用%@打印某个对象, 系统内部默认就会调用父类的description方法
// 调用该方法, 该方法会返回一个字符串, 字符串的默认格式 <类的名称: 对象的地址> NSLog(@"person = %@", p); NSLog(@"%@", p);
// class注意c是小写, 只要给类发送class消息, 就会返回当前类的类对象
// 1.获取Person对应的类对象
Class c = [Person class];
// 2.打印Person的类对象
NSLog(@"当前对象对应的类 = %@", c);
NSLog(@"当前对象的地址 = %p", p);
return ;
}

description方法

注意点:

在description方法中尽量不要使用self来获取成员变量

因为如果你经常在description方法中使用self, 可能已不小心就写成了 %@, self

如果在description方法中利用%@输出self会造成死循环,因为此时的self就是该类的对象,打印自己又会调用-description,无限循环了就。

self == person实例对象

- (NSString *)description
{
NSString *str = [NSString stringWithFormat:@"age = %i, name = %@, height = %f, weight = %f, tel = %@, email = %@", _age, _name, _height, _weight, _tel, _email]; return str; }

- description 方法作用的更多相关文章

  1. OC基础--description方法

    PS:经过之类重写description方法后,个人感觉有点像C#中的ToString();方法 一.description方法的作用:(输出所有的OC对象都用%@) 1.默认情况下(不重写descr ...

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

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

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

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

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

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

  5. 什么情况下才要重写Objective-C中的description方法

    特别注意: 千万不要在description方法中同时使用%@和self,同时使用了%@和self,代表要调用self的description方法,因此最终会导致程序陷入死循环,循环调用descrip ...

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

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

  7. CO-类的本质、description方法

    类的本质 1. 类也是个对象 其实类也是一个对象,是Class类型的对象,简称“类对象” Class类型的定义 typedef struct objc_class  *Class; 类名就代表着类对象 ...

  8. 李洪强iOS开发之【Objective-C】07-自定义构造方法和description方法

    知识回顾 在前面已经介绍了如何定义类和创建并初始化对象,比如有Student这个类 1.Student.h 1 #import <Foundation/Foundation.h> 2 3 ...

  9. Objective-C运行时编程 - 实现自动化description方法的思路及代码示例

    发布自米高 | Michael - 博客园,源地址:http://www.cnblogs.com/michaellfx/p/4232205.html,转载请注明. 本文结构 基础实现 性能优化 参考 ...

随机推荐

  1. Django之搭建学员管理系统

    GET请求传参数的方式: /xxx/?k1=v1&k2=v2 ? 前面的是URL ?后面的是请求的参数 多个参数之间用&分隔 POST请求传数据: 是放在请求体里面的 表结构设计. - ...

  2. Windows操作系统及其安全机制

    kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html Windows操作系统及其安全机制 Windows文件系统 FAT (F ...

  3. 微博6月底升级后 报 10017/2/statuses/share.json或者10014/2/statuses/share.json错误

    一,背景 2017-06-26微博公告替换了一些接口,导致以前的: statuses/repost 转发一条微博 statuses/update 发布一条微博 statuses/upload 上传图片 ...

  4. LeetCode Maximum Swap

    原题链接在这里:https://leetcode.com/problems/maximum-swap/description/ 题目: Given a non-negative integer, yo ...

  5. matlab中求逆矩阵的高斯消元法实现的代码

    function qiuni =INV_GET(a)N=length(a);M=eye(N);%得到上三角矩?for i=1:N max=a(i,i); A=i; for j=i+1:N if(abs ...

  6. gradle 命令行

    1. 帮助 ./gradlew -h 2. gradle 可执行tasks gradle tasks or ./gradlew tasks 3. gradle help 任务 帮助了解每个task 的 ...

  7. Spring aop 记录操作日志 Aspect 自定义注解

    时间过的真快,转眼就一年了,没想到随手写的笔记会被这么多人浏览,不想误人子弟,于是整理了一个优化版,在这里感谢智斌哥提供的建议和帮助,话不多说,进入正题 所需jar包 :spring4.3相关联以及a ...

  8. The java.util.concurrent Synchronizer Framework笔记

    这篇笔记是关于 Doug Lea 的 The java.util.concurrent Synchronizer Framework . 原文地址:http://gee.cs.oswego.edu/d ...

  9. java图形用户界面BorderLayout布局。冲突

    总结:在使用边界布局发现,把所有的按钮组件都放入了panel.但是在中部的按钮组件找不到了.发现自己重复用了组件 1.this.add(bt4,BorderLayout.North); 2.panel ...

  10. 【LigerUI实战】Grid弹出编辑popup

    最近为分公司的项目做外援,做起了全栈的活.被公司自研架构磨灭的几乎忘掉了其他技能,正好新项目决定重新搭个架构,与同事们讨论过后,决定Spring+MyBatis+SpringMVC+CXF+Liger ...