美文网首页iOS将来跳槽用
【iOS-随笔】==、 isEqualToString、isEq

【iOS-随笔】==、 isEqualToString、isEq

作者: 纪宝宝 | 来源:发表于2016-03-17 14:00 被阅读2713次

    【概述】


    做iOS开发的都知道:
    <blockquote>
    if(2 == a),用来判断值是否相等
    [str1 isEqualToString:str2],用来判断字符串是否相等,</blockquote>

    但是之前并没有研究过,它们具体都有什么区别,今天碰到了一个关于这个的bug,就来总结下。

    </br>

    【区别】


    <blockquote>
    OC中的对象,都是用指针表示
    OC中方法的调用,是基于消息机制实现
    </blockquote>

    "==" / isEqualToString:

    <blockquote>
    "==" ,比较两个指针的值
    isEqualToString,比较两个字符串是否相同
    </blockquote>

    "==" / isEqual:

    <blockquote>
    "==" ,是判断两个对象的引用(reference)是否一样,也就是内存地址是否一样。
    isEqual ,判断是一个类方法,判断连个对象在类型和值上是否一样。
    </blockquote>

    is empty / isEqualToString

    <blockquote>
    [string isempty]判断字符串是不是null
    [string isEqualToString:@""]判断是不是""
    </blockquote>

    isEqual / isEqualToString

    <blockquote>
    IsEqual 是 NSObject 的方法 ,而 isEqualToString 是 NSString 的方法
    因此从继承关系角度来说isEqualToString 是 isEqual 的衍生方法
    </blockquote>

    • isEqual,方法首先检查指针的等同性,相等直接返回YES,
      然后是类的等同性,空或非同类对象直接返回NO,
      最后调用对象的比较器进行比较。比较器的名称指示出参与比较的对象的类名称。若均相等,返回YES

    • isEqualToString,在比较对象都是字符串的前提下, 直接判断字符串内容,比较对象不是字符串,报错。

    </br>
    参考资料:
    http://blog.csdn.net/jerryvon/article/details/8224634
    http://mobile.51cto.com/iphone-280494.htm
    http://stackoverflow.com/questions/1112373/implementing-hash-isequal-isequalto-for-objective-c-collections?rq=1

    ——————————— 【 MadeBy 纪宝宝 】 ———————————

    相关文章

      网友评论

        本文标题:【iOS-随笔】==、 isEqualToString、isEq

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