本文简单介绍了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时,在做等于比较时不会调用==方法!
它会调用另