美文网首页iOSiOS开发经验iOS Developer
Objective-C中 ==、isEqual、isEqualT

Objective-C中 ==、isEqual、isEqualT

作者: sellse | 来源:发表于2015-08-21 17:02 被阅读4588次
    Objective-C中 ==、isEqual、isEqualToString判断字符串相等

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

        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"){}

    相关文章

      网友评论

      • 5962e378defb:遇到了一次isEqualToString 比较后台返回的字符串和本地的,是两个一模一样的汉字。返回的Unicode码两个开头都是大写的U,复制过来在网页转就是小写的u。导致不等。简直是无语。

      本文标题:Objective-C中 ==、isEqual、isEqualT

      本文链接:https://www.haomeiwen.com/subject/wvmgqttx.html