Zakładam, że oba te obiekty są typu CLLocation
, na podstawie nazwy getClLocation
.
CLLocation
nie ma żadnej specyfikacji na to, co robi jego metoda isEqual:
, więc jest to prawdopodobnie tylko dziedziczenie realizację NSObject
, który po prostu porównuje wskaźniki obiektów. Jeśli masz dwa różne obiekty z identycznymi danymi, implementacja ta powróci NO
. A jeśli masz dwa różne obiekty z niewielką zmiennością lokalizacji, zdecydowanie nie będą one równe.
Prawdopodobnie nie chcesz isEqual:
podczas porównywania obiektów lokalizacji. Zamiast tego prawdopodobnie będziesz chciał użyć metody distanceFromLocation:
na CLLocation
. Coś takiego byłoby lepsze:
CLLocationDistance distanceThreshold = 2.0; // in meters
if ([currentAnchor distanceFromLocation:currentBusiness.getCllLocation] < distanceThreshold)
{
do a;
}
else
{
do b;
}
To nie jest prawda, IsEqual ma robić tylko to, sprawdzić zawartość do określić, czy dwa obiekty są równe. Dwa obiekty nie są równe, jeśli ich właściwości nie są takie same. –