iOS KVC (九) KVC模型转化(1) 模型打印 description, debugDescription

iOS KVC(一)基本了解
iOS KVC (二) 不可不知的赋值深层次原理
iOS KVC (三)不可不知的取值深层次原理
iOS KVC (四)keyPath的深度解析
iOS KVC (五)KVC几种典型的异常处理
iOS KVC (六) KVC容器类及深层次原理
iOS KVC(七) KVC正确性的验证
iOS KVC (八) KVC几种常见应用
iOS KVC (九) KVC模型转化(1) 模型打印 description, debugDescription
iOS KVC (十)模型转换(2)模型转换

本章主要讲解两个方法,其中也用到一些runtime 的方法。runtime后续必不可少会讲。直接上代码。

直接上代码

1.Person.h

#import 

@interface Person : NSObject

@property (nonatomic,strong)NSString *name;
@property (nonatomic,assign)int age;


@end
2.Person.m

#import "Person.h"
#import 
@implementation Person

- (NSString *)description{
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    //得到当前class的所有属性
    uint count;
    objc_property_t *properties = class_copyPropertyList([self class], &count);
    for (int i = 0; i -- %@",[self class],self,dic];
}

- (NSString *)debugDescription{
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    //得到当前class的所有属性
    uint count;
    objc_property_t *properties = class_copyPropertyList([self class], &count);
    for (int i = 0; i -- %@",[self class],self,dic];
}

@end
3.ViewController.m
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    Person *p = [[Person alloc]init];
    p.name = @"小明";
    p.age = 10;
    NSLog(@"p:%@",p);
}

打印数据:

2018-05-18 17:54:09.925353+0700 KVC[44115:1324816] p:description: -- {
    age = 10;
    name = "\U5c0f\U660e";
}

总结:当我们对p进行打印时会直接触发“description”方法,那么“debugDescription”在什么时间调用,请看下图


iOS KVC (九) KVC模型转化(1) 模型打印 description, debugDescription_第1张图片
断点打印.png

总结:
由上图我们可以看到,当对p进行打印的时候,直接触发调用了“description”,而我们对p进行控制台打印的时候 会触发“debugDescription”函数,已经很明白了 ,不需要进行解释了。

精彩在后面~

你可能感兴趣的:(iOS KVC (九) KVC模型转化(1) 模型打印 description, debugDescription)