A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨勇 中级黑马   /  2014-4-28 23:18  /  1489 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨勇 于 2014-5-7 10:11 编辑

请问+description方法的使用和-description方法有什么区别?谢谢

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

3 个回复

倒序浏览
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
复制代码

评分

参与人数 1技术分 +1 收起 理由
bao9107 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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;

}

回复 使用道具 举报
+description方法的使用和-description方法
一个是类的输出格式,一个是对象的输出格式。从方法定义上也可以看出来一个是类方法,一个是对象方法。

+description方法
[类名 description]

-description
[对象 description]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马