• 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
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    ZOJ 3278 8G Island 二分+二分
    POJ 2785 4 Values whose Sum is 0 二分
    POJ 3063 Sherlock Holmes 随机化
    UVA 10881 Piortr‘s Ants 思维 模拟
    UVA 1388 Graveyard
    Codeforces Round #410 (Div. 2) B. Mike and strings
    Codeforces 821B
    51nod 1103 N的倍数 抽屉原理
    Codeforces Round #427 (Div. 2) 835D
    Codeforces Round #427 (Div. 2) 835C-Star sky 二维前缀和
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6226556.html
Copyright © 2020-2023  润新知