有没有办法比较两个Objective-C对象完全基于它们实现的协议。
具体来说,我正在考虑比较符合MKAnnotation的两个对象(iPhone mapkit注释)。给定两个符合协议的对象,我想确定它们在协议方面是否相等。在这种情况下,这意味着至少coordinate属性是相同的。
答案 0 :(得分:2)
由于CLLocationCoordinate2D
是一个结构,因此您可以将两个coordinate
的{{1}} @属性与MKAnnotation
进行比较。例如:
==
警告:您需要比较MKAnnotation *a1;
MKAnnotation *a2;
if(a1.coordinate == a2.coordinate) {
//coordinates equal
}
中的浮点值(CLLocationCoordinate2D
的纬度和经度字段属于CLLocationCoordinate2D
类型CLLocation
{1}}编辑为typdef
)。与往常一样,比较两个浮点值是否相等,充满了微妙之处。您可能希望独立地对纬度和经度值进行更详细的比较(例如,检查它们的绝对差值是否在某个小范围内)。有关此问题的详情,请参阅Numerical Recipes。
如果你想比较所有属性,比如
double
(再次使用保存警告)可以解决问题。