description

今天学习一下description这个方法,这个方法是iOS内部已经实现的方法,主要用于日志输出,在控制台nslog的打印,首先创建一个Person类

#import <Foundation/Foundation.h>


@interface Person : NSObject

{

    NSInteger _age;

    NSString *_name;

}

@property NSInteger age;

@property NSString *name;


@end

#import "Person.h"


@implementation Person

@end

然后在外界调用

Person *p = [[Person alloc] init];

    p.age = 10;

    p.name = @"jack";

NSLog(@"%@",p);

这个时候控制台只会输出类名:内存地址 <Person: 0x61800003fcc0>  

然后我们重写Person的description方法

#import "Person.h"


@implementation Person

-(NSString *)description{

    //切记不能再这个方法里面打印这个方法,不然的话会造成死循环

    NSLog(@"%@",self);

    return [NSString stringWithFormat:@"age = %ld and name = %@",_age,_name];

}

@end

这样再次打印就会出现以下信息

2017-07-14 11:01:47.568 Description[68642:1073141] age = 10 and name = jack

其实它还有一个类方法,默认打印的话会返回类名

#import "Person.h"


@implementation Person

-(NSString *)description{

    //切记不能再这个方法里面打印这个方法,不然的话会造成死循环

//    NSLog(@"%@",self);

    return [NSString stringWithFormat:@"age = %ld and name = %@",_age,_name];

}

+(NSString *)description{

    return @"123";

}

@end

来我们在外界调用看看

   Class c =  [p class];

    NSLog(@"++%@",c);

控制台会返回

2017-07-14 11:05:44.973 Description[68726:1076148] ++123

这样我们就可以自定义打印信息啦

还有很多的打印方法

// 打印p对象地址

    NSLog(@"%@",p); // <Person: 0x61800003fcc0>

    // 打印p指针的地址

    NSLog(@"%p",p); // 0x61800002b1a0 对象和指针地址一致

    // 指针变量的地址

    NSLog(@"%p",&p);// 0x7fff5aeb79d8

    // NSLog不能%s无法输出带有中文的文件路径,可以用c语言中的printf%s来代替

     NSLog(@"%s",__FILE__);

     printf("%s",__FILE__);

    // 输出当前方法

    NSLog(@"%s",__FUNCTION__);

    //输出当前行数

    NSLog(@"%d",__LINE__);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值