您当前的位置: 首页 >  swift

Swift与Objc混搭在数组内部查找时需要注意的一点

发布时间:2018-11-16 10:14:20 ,浏览量:0

现在随着Swift越来越趋于完美,很多人开始使用Swift来写代码.

在Swift与Objc结合使用时,还是要注意一些地方,比如数组元素的查找.

从Swift里传入一个Node对象,在Objc里Node数组里查询,往往你就找不到 😦

原因是Objc的数组查询时会调用Node的 isEqual:方法:

- (NSUInteger)indexOfObject:(ObjectType)anObject;

Starting at index 0, each element of the array is passed as an argument to an isEqual: message sent to anObject until a match is found or the end of the array is reached. Objects are considered equal if isEqual: (declared in the NSObject protocol) returns YES.

如果你自己不实现isEqual:方法,Objc会使用对象地址比较它们的相等性,这样一来两个不同对象即使真的内容完全一样也不会相等.

简单来说,我们需要自己实现isEqual:方法:

-(BOOL)isEqual:(id)object{
    Node* node = (Node*)object;
    if(node.nodeId == self.nodeId){
        return true;
    }
    return false;
}

那么在实现了相等方法之后,从Swift中传入的相等对象与Objc对象的比较都会如出一辙,你不会再为此烦恼了.

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

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

微信扫码登录

0.0486s