通过协议比较/平等两个对象

时间:2009-09-08 20:17:25

标签: iphone objective-c

有没有办法比较两个Objective-C对象完全基于它们实现的协议。

具体来说,我正在考虑比较符合MKAnnotation的两个对象(iPhone mapkit注释)。给定两个符合协议的对象,我想确定它们在协议方面是否相等。在这种情况下,这意味着至少coordinate属性是相同的。

1 个答案:

答案 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

(再次使用保存警告)可以解决问题。