iOS 中的“==”与“isEqual ”

本文介绍了Objective-C中比较变量相等性的两种方法:“==”运算符和“isEqual”方法,并详细解释了这两种方法的区别及使用场景,特别是对于NSString类如何重写“isEqual”方法进行了深入探讨。

Objective-C中判断两个变量是否相等有两种方式,一种是利用“==”直接比较,另一种就是“isEqual”方法,下面是它们的介绍:

"=="方法: 当使用==来判断两个变量是否相等的时候,如果是基本类型变量,且都是数值型(类型可以不同),则只要值相等,就会返回真; 如果是两个指针类型变量【例如OC对象】,则必须是两个指针变量保存的内存地址相同才会返回真,且如果使用这种方法判断两个没有继承关系的指针变量就会提示警告:Comparison of distinct pointer types ('XXXX' and 'YYYY')

“isEqual”方法: 这个方法是NSObject类提供的一个实例方法,因此,所有指针变量都可以调用该方法来判断是否与其他指针变量相等。但这个方法判断两个对象相等的标准与“==”符号没有区别,同样要求两个指针变量指向同一个对象才会返回真。因此,这个NSObject类提供“isEqual”实例方法实际上没有太大意义。

不过需要特别提到的是NSString已经重写了NSObject的“isEqual”方法,判断标准不再是两个指针变量保存的内存地址相同返回真,而是只要两个字符串包含的字符序列相同就会返回真,否则假

验证: 我们通过两种方法来创建字符串,如下:

原因: 在上图中使用了两种创建方式,第一个是*字符串字面量创建方式**,第二种是运行时创建方式,这两个字符串创建方式不同,地址不同,保存的区域也不同,第一种保存在常量区,第二种保存在运行时内存区【即堆内存】

注:重写“isEqual”方法就是提供自定义的相等标准,由此,我们可以使一个对象与任意对象比较时都返回真,如下重写

转载于:https://juejin.im/post/5b2b05fdf265da59a23f1fcb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值