037.isEqual 合理的重写

来源:互联网 发布:官路淘宝全文免费阅读 编辑:程序博客网 时间:2024/05/23 15:11
---------------  main.m  ---------------
#import <Foundation/Foundation.h>

@interface FKUser : NSObject
@property (nonatomic , copy) NSString* name;
@property (nonatomic , copy) NSString* idStr;
- (
id) initWithName: (NSString*) name idStr: (NSString*) idStr;
@end

@implementation FKUser
- (
id) initWithName: (NSString*) name idStr: (NSString*) idStr
{
   
 if(self = [super init])
    {
       
 self.name = name;
       
 self.idStr = idStr;
    }
   
 return self;
}
- (BOOL) isEqual: (id) other
{
    if (self == other)
        return YES;
    if (other != nil && [other isMemberOfClass:FKUser.class])
    {
        FKUser* target = (FKUser*)other;
        return [self.idStr isEqual: target.idStr];
    }
   
 return NO;
}
@end

int main()
{
    FKUser* p1 = [[FKUser alloc] initWithName:@孙悟空" idStr: @"12343433433"];
    FKUser* p2 = [[FKUser alloc] initWithName:@"孙行者" idStr: @"12343433433"];
    FKUser* p3 = [[FKUser alloc] initWithName:@"孙悟饭" idStr: @"99933433"];
    NSLog(@"p1p2是否相等?%d", [p1 isEqual: p2]);
    NSLog(@"p2p3是否相等?%d", [p2 isEqual: p3]);
}

一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,可以把类的接口文件,类的实现文件写在main.m文件中。

二、本节代码涉及到的知识点:
1.本节代码重写了isEqual方法,指定了FKUser对象和其他对象相等的标准:
  即:另一个对象必须是FKUser类的实例,且两个实例的idStr必须相等。
0 0
原创粉丝点击