我在使用isEqual时遇到问题:

编码:

 if (currentAnchor isEqual:currentBusiness.getCllLocation))
    {
        do a;
    }
    else
    {
        do b;
    }

currentanchor和currentbusiness.getCllocation是位置

但是,如果它们相同,为什么要调用函数b?我的代码有问题吗?

最佳答案

我假设这两个对象都是基于CLLocationgetClLocation类型。
CLLocation对其isEqual:方法的功能没有任何规范,因此它很可能只是继承了NSObject的实现,该实现只比较对象的指针。如果您有两个具有相同数据的不同对象,则isEqual:实现将返回NO。而且,如果您有两个不同的对象,但位置略有不同,则它们肯定是不相等的。

比较位置对象时,您可能不希望使用isEqual:。相反,您可能想在distanceFromLocation:上使用CLLocation方法。这样的事情会更好:

CLLocationDistance distanceThreshold = 2.0; // in meters
if ([currentAnchor distanceFromLocation:currentBusiness.getCllLocation] < distanceThreshold)
{
  do a;
}
else
{
  do b;
}

关于objective-c - 如何测试两个CLLocations的相等性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6529726/

10-13 03:50