037.isEqual 合理的重写

本文探讨了Objective-C与Swift两种编程语言在iOS开发领域的应用与区别,包括其优势、使用场景及迁移策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------  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必须相等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值