我在使用isEqual时遇到问题:
编码:
if (currentAnchor isEqual:currentBusiness.getCllLocation))
{
do a;
}
else
{
do b;
}
currentanchor和currentbusiness.getCllocation是位置
但是,如果它们相同,为什么要调用函数b?我的代码有问题吗?
最佳答案
我假设这两个对象都是基于CLLocation
的getClLocation
类型。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/