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


图片发自简书App


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

    if (activityType == @"0"){}  //activityType是某一个变量名

然后你会得到这样一行黄色提醒

    Fixing “direct comparison of a string literal has undefined behavior”

原因在于

  • == :比较的是指针指向的地址,OC中的对象都是用指针表示的,但在这里并不能保证activityType0相等

那么很自然可以想到使用用isEqualisEqualToString方法,这两者也是有区别的:

  • isEqualNSObject方法,官方文档是这样写的

      Returns a Boolean value that indicates whether the receiver and a given object are equal.
      返回一个bool值判断两个对象是否相等

    如果两个对象是相等的,那么他们必须有相同的哈希值

  • isEqualToStringNSString方法,而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字符相同

    如果知道了两个对象都是字符串,isEqualToStringisEqual要快

所以以上代码应该写成

    if (activityType isEqualToString @"0"){}



文/sealband(简书作者)
原文链接:http://www.jianshu.com/p/2e70a7430362
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
posted @   brave-sailor  阅读(2097)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2015-12-27 iOS蓝牙4.0开发例子
点击右上角即可分享
微信分享提示