关于Description的一些理解

在C语言上, 我们用来打印东西的函数叫做printf, 它是专门用来打印东西在屏幕上给我们看的, 虽然printf在OC上也可以使用, 但是有一定的局限性, 不能很好的兼容OC的一些新特性, 在此OC提供了一个名叫NSLog的打印函数, 这个函数和printf一样, 是通过@""专门用来打印一些内容显示给我们看的.

我们知道NSLog是用来打印的, 但是它是怎么运作的呢?让我们来看看它涉及哪个方法, 所以才能如此简单.

这里涉及到一个方法:

description: 这个方法其实很简单, 就是用来接受东西和返回东西的, 它会通过编译器传给它的东西进行一个封装, 形成一个新的字符串, 并且把这个新的字符串地址返回给编译器.

 

下面是关于它的一个简单例子:

 

首先我们需要创建一个类:

这个是Human的.h文件

#import <Foundation/Foundation.h>

@interface Human : NSObject

@end

这里是Human的.文件, 在这里我们重写了description的返回值.

#import "Human.h"

@implementation Human

//这里是重写了一个关于description的方法, description是什么?
//description就是我们在OC上经常使用的打印函数NSLog的方法.
//description会把@""里面的内容放在一个括号里, 形成一个新的字符串并且返回新字符串的地址.
//用NSLog打印出来.
- (NSString *)description
{
    return @"I am human!";
}
@end

这里是main.m文件

#import <Foundation/Foundation.h>
#import "Human.h"

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

        Human *human = [Human new];

        NSLog(@"
%@", human);

        [human release];
    }
    return 0;
}

输出的结果:

2014-10-11 20:08:23.475 Description[2217:303] 
I am human!
Program ended with exit code: 0