关于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(@"\n%@", human); [human release]; } return 0; }
输出的结果:
2014-10-11 20:08:23.475 Description[2217:303] I am human! Program ended with exit code: 0