Objective-C 编程语言(2) 类,对象,消息 --- 类(5)检查两个类对象是否相等

本文探讨了在Cocoa框架中如何正确比较两个类对象是否相等的问题。特别是介绍了当面对动态派生类时,如何确保比较的是实际的类对象而非其派生版本。文章强调了应该使用class方法来获取类对象,并给出了具体的实现代码。
摘要由CSDN通过智能技术生成
转载请标明出处:http://blog.csdn.net/zhangxingping

    检查两个类对象是否相等  

    我们可以直接比较指针是否相等来检查两个类对象是否相等。重要的一点是获取正确的类。Cocoa 框架中提供了好几种特性可以动态地,透明地对即存的类进行派生,以便扩展他们的功能(例如,key-value Observing (KVO,关键字-值与观察机制)以及Core Data(核心数据)都会这么做。更多信息请分别参阅《Key-Value Obeserving 编程指南》和《Core Data编程指南》)。在这种情况下,class方法通常都会被重写,以便伪装成被他们所替代的类。因此当我们需要检测类对象是否相等的时候,我们应该使用class方法反悔的对象,而不是使用那些底层的函数。从API的层面来说,针对这种动态派生来将,下面的三项是不相等的:

    [object class] != object_getClass(object) != *((Class *)object);
    我们应该使用类似于下面的代码来检测两个类对象是否相等:   
    if ( [objectA class] ==[objectB class] )
    {
        //...
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值