Description

作者: iCoder_木子弋 | 来源:发表于2017-03-28 16:41 被阅读1169次

简述description

description方法是NSObject类的一个实例方法,因此所有的Object-C对象都有description方法。description方法返回的永远是字符串。

NSLog(@"%@", self);

重写runTime的方法来截取调用上述代码时到底走了哪个方法

+ (BOOL)resolveInstanceMethod:(SEL)sel{
    return YES;
}
//截取的方法:发现截取的方法是descriptionWithLocale而不是description,个人猜测是在运行时给转成了descriptionWithLocale:,而我们能够拿到的只有description方法。
sel = "descriptionWithLocale:"
//打印结果
<ViewController: 0x7fbae8c07830>

而我们在实际使用中对于对象的内存地址并不感冒,如果一个对象有多个属性并且我们想打印这些属性,例如self具有name、sex、birth等属性,我们需要这么做:

NSLog(@"obj == %@ name == %@ sex == %@ birth == %@", self, self.name, self.sex, self.birth);

我们也可以通过重写description方法来实现,这样的话只要我们对这个对象进行打印就会打印出这个对象的类以及属性

- (NSString *)description{
    return [NSString stringWithFormat:@"obj == %@ name == %@ sex == %@ birth == %@", self, self.name, self.sex, self.birth];
}

description陷阱:

1.千万不要在description方法中同时使用%@和self,下面的写法是错误的

- (NSString *)description {
return [NSString stringWithFormat:@"%@", self];
}

2.同时使用了%@和self,代表要调用self的description方法,因此最终会导致程序陷入死循环,循 环调用description方法


PS:过多的打印日志,你又不想删除,也不想造成安全问题,建议添加一个DEBUG模式:

#ifdef DEBUG
#define LYLog(...) NSLog(__VA_ARGS__)
#else
#define LYLog(...)
#endif
//平常的时候使用LYLog而不再使用NSLog

等上线的时候关闭了DEBUG模式就不会有打印了。。。

相关文章

  • description

    description Returns a string that represents the contents...

  • description

    一般打印一个对象的时候输出的是对象名称和地址如果想打印对象里面的具体成员变量的值就需要重写description方法

  • Description

    简述description description方法是NSObject类的一个实例方法,因此所有的Object-...

  • description重写

    定义了对象的打印格式 是系统提供的方法 通常该方法对我们是隐身的 但是NSLog打印当前类对象时,该方法会被调用/...

  • 多态 description

    多态是某一种事物的多种形态多态的条件 有继承关系 父类指针指向子类 子类重写父类方法 description注意点...

  • oc Description

    标签:ios开发入门 //自定义类用NSLog是输出不了的,输出的是它的地址,而在后面实现了description...

  • description方法

    1.description基本概念 NSLog(@"%@", objectA);这会自动调用objectA的des...

  • Phrase & Description

    cuisine 烹饪,烹调法,菜系,厨房 dogmatic 教条的;武断的 receptive 善于接受的;能容纳...

  • iOS - Description

    自定义 po 打印,print & NSLog 类的打印输出 description - print 日志输出 d...

  • idea注释

    /** @ClassName : ${NAME} @Description : ${description} @A...

网友评论

    本文标题:Description

    本文链接:https://www.haomeiwen.com/subject/nmyjottx.html