黑马程序员技术交流社区

标题: description方法的使用 [打印本页]

作者: 杨勇    时间: 2014-4-28 23:18
标题: description方法的使用
本帖最后由 杨勇 于 2014-5-7 10:11 编辑

请问+description方法的使用和-description方法有什么区别?谢谢
作者: 悟中生有    时间: 2014-4-28 23:37
1,+description方法(类方法)
  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3. int main(int argc, const char * argv[])
  4. {
  5.     Class c = [Person class];
  6.     //NSLog(@"%@",c);默认输出的是类名->2014-04-09 19:38:39.804 6-description[726:303] Person
  7.     NSLog(@"%@",c);
  8.     //重写+ (NSString *)description方法后的输出,其中的abc是重写时自定义的字符串。
  9.     //2014-04-09 19:43:34.099 6-description[765:303] abc
  10.     return 0;
  11. }
  12. //重写+ (NSString *)description方法
  13. + (NSString *)description
  14. {
  15.     return @"abc";
  16. }
复制代码

2,-description方法(对象方法)
使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出。
  1. #import "Person.h"

  2. @implementation Person
  3. //重写- (NSString *)description方法
  4. - (NSString *)description
  5. {
  6.     return  [NSString stringWithFormat:@"age=%d, name=%@", _age, _name];//字符串拼接
  7. }
  8. @end
  9. //运行结果: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