黑马程序员技术交流社区
标题: description方法的使用 [打印本页]
作者: 杨勇 时间: 2014-4-28 23:18
标题: description方法的使用
本帖最后由 杨勇 于 2014-5-7 10:11 编辑
请问+description方法的使用和-description方法有什么区别?谢谢
作者: 悟中生有 时间: 2014-4-28 23:37
1,+description方法(类方法)
- #import <Foundation/Foundation.h>
- #import "Person.h"
- int main(int argc, const char * argv[])
- {
- Class c = [Person class];
- //NSLog(@"%@",c);默认输出的是类名->2014-04-09 19:38:39.804 6-description[726:303] Person
- NSLog(@"%@",c);
- //重写+ (NSString *)description方法后的输出,其中的abc是重写时自定义的字符串。
- //2014-04-09 19:43:34.099 6-description[765:303] abc
- return 0;
- }
- //重写+ (NSString *)description方法
- + (NSString *)description
- {
- return @"abc";
- }
复制代码
2,-description方法(对象方法)
使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出。
- #import "Person.h"
- @implementation Person
- //重写- (NSString *)description方法
- - (NSString *)description
- {
- return [NSString stringWithFormat:@"age=%d, name=%@", _age, _name];//字符串拼接
- }
- @end
- //运行结果:2014-04-09 19:32:37.485 6-description[653:303] age=26, name=jim
复制代码
作者: dawn.dai 时间: 2014-4-28 23:45
本帖最后由 dawn.dai 于 2014-4-29 00:05 编辑
-description方法: 使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出 ,决定了对象的输出结果;
+ description方法:使用NSLog和%@输出某个类对象时,会调用类对象+description方法,并拿到返回值进行输出,决定了类对象的输出结果。
@implementation Person
- (NSString *)description
{
return [NSString stringWithFormat:@"输出对象输出格式"];
}
+ (NSString *)description
{
return [NSString stringWithFormat:@"输出类对象输出格式"];
}
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *p =[Person new];
NSLog(@"%@",p); //默认输出格式是<类名:内存地址>,我写了- description就会按照我写的格式输出: 输出对象输出格式
Class c =[Person class];
NSLog(@"%@",c);//m默认是输出 类名,我重写+description同样会按我的意思输出: 输出类对象输出格式
}
return 0;
}
作者: 戴文婷 时间: 2014-4-29 10:34
+description方法的使用和-description方法
一个是类的输出格式,一个是对象的输出格式。从方法定义上也可以看出来一个是类方法,一个是对象方法。
+description方法
[类名 description]
-description
[对象 description]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |