小谈==与isEqual方法
来源:互联网 发布:k均值聚类算法opencv 编辑:程序博客网 时间:2024/06/04 14:43
小谈==与isEqual方法
Objective-C程序中测试两个变量是否相等有两种方式,一种是利用==运算符,另一种是利用isEqual方法。
当使用==来判断俩个变量是否相等时,如果两个变量是基本类型的变量,且都是数值型(不一定要求数据类型严格相同),则只要两个变量的值相同,则返回为真。如果两个变量是指针类型的变量,它们必须指向同一个对象(也就是两个指针变量所保存的内存地址相同),才返回为真。当使用==来比较类型上没有继承关系的两个指针变量时,编译器会提示警告。
isEqual:方法是NSObject类提供的一个实例方法,因此,所有的指针变量都可调用该方法来判断是否与其它指针变量相等。但这个方法判断对象相等的标准与==符号没有区别。NSString已经重写了NSObject得isEqual:方法:只要两个字符串所包含的字符序列相同,则返回为真。另外NSString不仅重写了isEqual:方法,还定义了一个isEqualToString:方法,该方法专门用来判断两个字符串序列是否相等。在实际应用中还可能需要开发者重写此方法。
对初学者而言,NSString还有一个非常容易迷惑的地方:@“hello”直接量和【NSString stringWithFormat:@“hello”】;有什么区别呢?当程序使用形如@“hello”的字符串直接量时,系统将会使用常量池来管理这些字符串。常量池保证相同的字符串直接量只有一个,不会产生多个副本,即当两个指针变量指向一个字符串对象时,它们保存的地址值完全相等。使用NSString stringWithFormat:类方法创建的字符串对象时运行时创建出来的,它们保存在运行时内存区内(即堆内存);两个指针变量保存的地址不同。
0 0
- 小谈==与isEqual方法
- OC中的==和isEqual方法
- OC中==与isEqual
- 重载hash与isEqual:方法
- == isEqual 区别
- 黑马程序员—OC基础-- ==和 isEqual方法
- 关于NSObject类的description方法和isEqual/==
- ObjC中isEqual与==的区别
- ObjC中isEqual与==的区别
- ObjC中isEqual与==的区别
- iOS中==与isEqual:的区别
- iOS开发:==、isEqual与isEqualToString判断是否相等
- 关于"=="和"isEqual"
- iOS中的相等== isEqual isEqualToString
- Object中 isequal,isEqualToString,!=的区别
- NSObject的isEqual:方法
- iOS 重写isEqual方法
- Objective-C中关于isEqual与“==”的区别解析
- 不用加减乘除做加法
- 【java基础】——java面向对象(上)—面向对象、类与对象、封装、构造函数等
- 第一章:OGG简介
- 在goroutine里并发调用sshagent出现panic的解决方案
- GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助
- 小谈==与isEqual方法
- 最大堆,最小堆插入/删除以及最大堆的排序
- NativeViewer for VS2010
- 进一步改进小游戏
- 多角度思考 创造性思维 几乎整个Byteland王国都被森林和河流所覆盖 题
- 解压缩zip文件
- Git-删除本地目录的repository(本地仓库)
- Linux-Linux 查看系统信息
- SAT数学题库精选试题及解析