Objective-C中判断两个变量是否相等有两种方式,一种是利用“==”直接比较,另一种就是“isEqual”方法,下面是它们的介绍:
1、"=="方法:
当使用==来判断两个变量是否相等的时候,如果是基本类型变量,且都是数值型(类型可以不同),则只要值相等,就会返回真;
如果是两个指针类型变量【例如OC对象字典】,则必须是两个指针变量保存的内存地址相同才会返回真,且如果使用这种方法判断两个没有继承关系的指针变量就会提示警告:Comparison of distinct pointer types ('XXXX' and 'YYYY')
两个字典对象是无法用==判断出来是否有相等的,需要用isEqual进行判断
2、“isEqual”方法:
这个方法是NSObject类提供的一个实例方法,因此,所有指针变量都可以调用该方法来判断是否与其他指针变量相等。但这个方法判断两个对象相等的标准与“==”符号没有区别,同样要求两个指针变量指向同一个对象才会返回真。因此,这个NSObject类提供“isEqual”实例方法实际上没有太大意义。
不过需要特别提到的是NSString已经重写了NSObject的“isEqual”方法,判断标准不再是两个指针变量保存的内存地址相同返回真,而是只要两个字符串包含的字符序列相同就会返回真,否则假
注意:
@“123” 和StringWithFormat:@“123”这两个的区别如下:
@“123”是常量,保证字符串直接量只有一个,不会有多个副本
NSString *s1 = @“123”;
NSString *s2 = @“123”;
打印一下s1和s2的地址值,是一样的
使用StringWithFormat:@“123”,这是运行时创建出来的,被保存在运行时内存区内(堆内存),不会防护常量池中,因此地址和s1和s2是不同的。
iOS “==” 与 “isEqual”对比
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 简单记录下:Objective-C中判断两个变量是否相等有两种方式,一种是利用“==”直接比较,另一种就是“isE...
- 点赞再看,养成习惯,白嫖不好,欢迎大家关注我面试小专栏 : iOS中高级进阶之路 有我准备的一线大厂面试资料和简历...
- 两个概念 相等性与本体性 来看段代码,猜猜结果如何 打印结果 a == ba c 具有本体性这段代码,首先我们要搞...