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

图片发自简书App

在判断一个字符串类型的变量是否与某字符时相等,你可能写下这样一行代码

    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"){}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在当前这个时代(比如说公元2016年),如果你并不是在维护历史遗留的文本处理代码,没有在每个地方都使用Unicod...
    纵横而乐阅读 2,899评论 3赞 16
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,627评论 5赞 28
  • 假如你大龄,单身,工作努力,做事讲究,对生活不迁就,一定会有人苦口婆心地劝诫你:“差不多就行了,大家都是这么凑合过...
    力量女侠阅读 931评论 0赞 1
  • 浣花人家有事(16) 晨曦初现时候,最难将息。 多年来宋筝都是在天光微亮的时候醒来,有时翻身复又睡去,有时闭了眼睛...
    广哥真有趣儿阅读 426评论 0赞 0
  • 日·月·山·海 太阳匆匆奔向天边 赶赴期待已久的约会 山陪在她身旁 沉默无言 太阳一抹羞红 等待着海的歌声 夜穿着...
    一了0820阅读 176评论 0赞 9

友情链接更多精彩内容