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 ...
随机推荐
- js05---js实现Map
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- DG动态性能视图详解
V$LOG 显示CONTROLFILE记录的LOG FILE信息. 列名 描述 GROUP# 日志组号 THREAD# 日志线程号 SEQUENCE# ...
- Unity新版网络-NetworkManager
NetworkManager是一个组件,用来管理网络多人游戏的状态.它实际上是完全使用HLAPI实现,所以它所做的一切程序员可以使用其他方式实现.然而,NetworkManager封装好了很多有用的功 ...
- 洛谷 P1571 眼红的Medusa
P1571 眼红的Medusa 题目描述 虽然Miss Medusa到了北京,领了科技创新奖,但是他还是觉得不满意.原因是,他发现很多人都和他一样获了科技创新奖,特别是其中的某些人,还获得了另一个奖项 ...
- 巧用数据流让 Word 文档在线阅读
常常写博客或空间日记的朋友,对网络编辑器(如图1,是CSDN的博客编辑器)并不陌生.也比較easy做出非常绚烂的排版.但这次在做一个BS的项目,客户一直在用Office的软件中的Wor ...
- hysbz 2243 染色(树链剖分)
题目链接:hysbz 2243 染色 题目大意:略. 解题思路:树链剖分+线段树的区间合并,可是区间合并比較简单,节点仅仅要记录左右端点的颜色就可以. #include <cstdio> ...
- Windows 共享无线上网 无法启动ICS服务解决方法(WIN7 ICS服务启动后停止)
Windows 共享无线上网 无法启动ICS服务解决方法(WIN7 ICS服务启动后停止) ICS 即Internet Connection Sharing,internet连接共享,可以使局域网上其 ...
- 6 Spring Boot 静态资源处理
转自:https://blog.csdn.net/catoop/article/details/50501706
- 有关Canvas的一点小事--鼠标绘图
1. 如何根据鼠标位置获取canvas上对应位置的x,y. 2. canvas的图糊了,设置宽和高的方式不对. 3.鼠标绘图代码 之前听说过canvas这个元素,但是实际上并没有深入了解过.不过日 ...
- [selenium]-处理滚动条
转载于:https://blog.csdn.net/lilongsy/article/details/76142497 1.先把driver 强制转换为js,如下 JavascriptExecutor ...