OC 重写description,isEqual方法

// 为了能用%@打印出对象的有效信息,需要重写description方法
- (NSString *)description
{
    // 最简单的办法是将属性和值组合成键值对存放到字典中
    // 这样只需要调用字典的description方法就能获取对应的描述字符串
    NSDictionary *dictionary = @{@"name" : name_, @"address" : address_, @"friends" : friends_};
    NSString *str = [[super description] stringByAppendingString:dictionary.description];

    // 由于是Foundation自身的原因,描述字符串中的中文字符会显示为其编码
    // 因此需要转换一下,这样才能正确的显示中文
    const char *s = [str cStringUsingEncoding:NSUTF8StringEncoding];
    NSString *ret = [NSString stringWithCString:s encoding:NSNonLossyASCIIStringEncoding];

    return ret;
}

  

- (BOOL)isEqual:(id)object
{
    // 如果指向同一个对象或者均为nil则认为相等
    if (self == object) return YES;

    // 当object不为nil,且是本类的实例时:
    if (object && [object isMemberOfClass:[self class]]) {
        TZObject *another = object;

        BOOL ret = YES;
        ret = ret && [self.name isEqualToString:another.name];
        ret = ret && (self.age == another.age);

        return ret;
    }

    return  NO;
}

  

时间: 2024-12-28 09:28:45

OC 重写description,isEqual方法的相关文章

OC中description、 SEL、类本质、self和super用法

一:description方法 description有对象方法和类方法两种,(是NSObject类的方法) 1,-description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出.(系统会自动调用打印对象的description方法) 而如果打印NSString对象的话,默认返回的就是NSString字符串 2,+description (类方法) 使用NSLog和@%输出某个类时,会调用类的description类方法,并拿

重写description方法

//重写description方法 //description建议大家在实际开发中都要重写这种方法.然后将类中有意义的成员变量打印出来,这样很方便我们调试程序 -(NSString *)description { //优化 return [NSString stringWithFormat:@"我的cpu=%.1f我的内部存储是=%.1fMB",_cpu,_ram]; NSString *result = [NSString stringWithFormat:@"我的cpu=

OC语言description方法

一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 使用@%打印对象如(“@%”,P)默认打印输出为<类名

IOS重写description方法,自定义控制台(log)信息

description是所有类都有的一个方法. 我们重写这个方法,可以自定义实例输出的信息. 比如我们创建一个Person类: 在.h文件中添加两个属性: #import <Foundation/Foundation.h> @interface Person : NSObject @property (strong, nonatomic) NSString *name; @property (assign, nonatomic) int age; @end 在.m文件中重写descriptio

OC重写init方法

在创建一个对象的时候我们经常会用到init方法,单单是init只能是初始化,当我们在初始化的时候想要给这个对象加上默认的东西的时候, 系统提供的init方法就不能满足我们的需要,这时,就需要我们自己去重写init方法: 通常在使用init方法的时候,系统先会在自己这个类中查询是否实现(重写)这个方法,如果没有实现,就会逐层向上面的父类查找,直到 找到实现了的init方法,其他方法的执行顺序也是这样. 1.首先创建一个Person 类和一个Car 类 2.在Car类里面定义属性(我们要的效果是输出

李洪强iOS开发之OC语言description方法和sel

OC语言description方法和sel 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 使用@%打

OC语言description方法和sel

一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 使用@%打印对象如(“@%”,P)默认打印输出为<类名

OC基础:继承.初始化方法,便利构造器

继承: 1.单向继承,一个类只能有一个父类,一个父类可以有多个子类. 2.单向继承,基类(根类)是OSObject 3.子类可以继承父类的属性和方法 当父类的方法不满足子类的需求时,子类可以重写父类的方法,重写父类的方法,在子类中不需要再次声明. 1.完全重写 2.部分重写   使用super 建立继承关系之后,子类可以继承父类的: 1.实例变量,@[email protected]修饰情况之下 2.公开的方法 一个方法如果在.h中声明了,那么这个方法就是公开的方法,如果没有声明,则是私有的.

黑马程序员--构造方法重写和desception方法重写

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 构造方法的作用及用法 我们新建一个学生类,但是学生的学号是自动生成的,所以声明icast这个成员变量中我们加了一个readonly,不允许外部设置他的属性 内容包含了构造方法的重写和description的重写,重写的方法的方式和目的 // 学生的声明文件 #impo