您当前的位置: 首页 >  swift

Swift派生与不派生自NSObject对象之间等于比较的不同

发布时间:2019-02-21 11:06:36 ,浏览量:0

本文简单介绍了Swift中派生与不派生自NSObject的类,在等于比较时表现出的不同行为;还顺带讨论了创建大数组时效率的问题.

等于或不等于

我们知道对于数组的比较来说,实际比较的是它们中的每一个对应位置上元素.

所以最终都是要比较对象的.

我们还知道对于Swift中的类来说,要实现==操作符,需要遵守Equatable协议,并实现==方法.

比如对于类A来说:

class A:NSObject{
    var name:String
    var id:Int
    
    init(name:String,id:Int){
        self.name = name
        self.id = id
    }
    
    convenience override init() {
        self.init(name: "", id: 0)
    }
}

要实现如下方法:

static func ==(lhs:A,rhs:A)->Bool{
   if lhs.name == rhs.name,lhs.id == rhs.id{
        return true
    }
    return false
}
派生自NSObject的时候

一般情况下,上面的讨论无疑是正确,但同时却是不严谨的!

在这里插入图片描述

why???

因为当A继承自NSObject时,在做等于比较时不会调用==方法!

它会调用另

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.4122s