Objective-C中 ==、isEqual、isEqualToString判断字符串相等

在判断一个字符串类型的变量是否与某字符时相等,你可能写下这样一行代码
if (activityType == @"0"){} //activityType是某一个变量名
然后你会得到这样一行黄色提醒
Fixing “direct comparison of a string literal has undefined behavior”
原因在于
==
:比较的是指针指向的地址,OC中的对象都是用指针表示的,但在这里并不能保证activityType
与0
相等
那么很自然可以想到使用用isEqual
或isEqualToString
方法,这两者也是有区别的:
isEqual
:NSObject
方法,官方文档是这样写的Returns a Boolean value that indicates whether the receiver and a given object are equal.
返回一个bool值判断两个对象是否相等如果两个对象是相等的,那么他们必须有相同的哈希值
isEqualToString
:NSString
方法,而NSString
是继承自NSObject
的,所以isEqualToString
应该是isEqual
的衍生方法,是对isEqual
的细分,它的官方文档是这样写的Returns a Boolean value that indicates whether a given string is equal to the receiver using a literal Unicode-based comparison.
返回一个bool值判断给出的字符串是否与已有的Unicode字符相同如果知道了两个对象都是字符串,
isEqualToString
比isEqual
要快
所以以上代码应该写成
if (activityType isEqualToString @"0"){}
原文链接:http://www.jianshu.com/p/2e70a7430362
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
Objective-C中 ==、isEqual、isEqualToString判断字符串相等的更多相关文章
- mybatis中if标签判断字符串相等问题
mybatis 映射文件中,if标签判断字符串sfyx变量是否是字符串Y的时候,发现并不管用: <if test="sfyx=='Y' "> and 1=1 </ ...
- C#中使用IndexOf()判断字符串在字符串数组中第一次出现的索引位置
] {"}; "; //判断字符串的前几位在另一个字符串数组中第一次出现的索引位置 index = Array.IndexOf(s, s1.Substring(, ));
- objective C中的字符串NSStirng常用操作
objective C中的字符串操作 在OC中创建字符串时,一般不使用C的方法,因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,在Cocoa中NSString集成的一些方法,可以很方便的 ...
- 用递归法判断字符串A中包含多少个字符串B
string类提供了判断字符串B在字符串A中首次(或最后)出现的Index的方法,但有时候需要判断B在A中出现了多少次. 为此想了一个算法. public static void CountIndex ...
- PHP判断字符串中是否包含指定字符串,支持中文哦
RT,随手写的 /** * 判断字符串中是否包含指定字符串 * @var source 源字符串 * @var target 要判断的是否包含的字符串 * @return bool */ functi ...
- 字符串--java中判断字符串是否为数字的方法的几种方法?
ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...
- 判断字符串中是否有SQL攻击代码
判断一个输入框中是否有SQL攻击代码 public const string SQLSTR2 = @"exec|cast|convert|set|insert|select|delete|u ...
- ***用php的strpos() 函数判断字符串中是否包含某字符串的方法
判断某字符串中是否包含某字符串的方法 if(strpos('www.idc-gz.com','idc-gz') !== false){ echo '包含'; }else{ echo '不包含'; } ...
- [C#]判断字符串中是否包含中文
关键代码: /// <summary> /// 判断字符串中是否包含中文 /// </summary> /// <param name="str"&g ...
随机推荐
- HDU 2281 Square Number Pell方程
http://acm.hdu.edu.cn/showproblem.php?pid=2281 又是一道Pell方程 化简构造以后的Pell方程为 求出其前15个解,但这些解不一定满足等式,判断后只有5 ...
- CentOS7下简单安装python3.7.0步骤
一.安装编译工具 #yum -y install gcc #yum -y groupinstall "Development tools" #yum -y install zlib ...
- 安装Mysql最新版本mysql-5.7.10-winx64出现的几个问题解决
电脑是64位的安装不了Windows (x86, 32-bit),Mysql installer MSI ,然后下载了Windows (x86, 32-bit), ZIP Archive 这种是免安装 ...
- 怎样将OpenStack部署到Hadoop
随着信息时代的快速发展,大数据技术和私有云环境都非常实用;只是,假设将两者结合在一起.企业会获得巨大的利润.虽然结合两者会让环境变得更复杂.企业仍然能够看到将 OpenStack 私有云和 Apach ...
- [Angular] Implement a custom form component by using control value accessor
We have a form component: <label> <h3>Type</h3> <workout-type formControlName=& ...
- NYOJ 552 小数阶乘
小数阶乘 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描写叙述 编写一个程序,求一个数m的阶乘. 输入 有多组測试数据,以EOF结束. 每组測试数据有1个整数m. 输出 每 ...
- JS实现跑马灯效果(鼠标滑入可暂停,离开继续跑)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 使用Surging Mqtt 开发基于WS的MqttClient客户端
原文:使用Surging Mqtt 开发基于WS的MqttClient客户端 最近一段时间由于要做一套智能设备系统,而有幸了解到Surging中的Mqtt broker,学习了很多东西本篇文章基于Su ...
- Spring Boot中的缓存支持(一)注解配置与EhCache使用
Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...
- Seal Report开放数据库报表工具(.Net)
Seal Report_20160923 概述:开放数据库报表工具(.Net) 简介:Seal-Report提供了一个完整的框架,用于从任何数据库生成日常报告和仪表板.Seal-Report是Micr ...