我这里有一个方法可以计算地图视图上的注释数量。但是,每次调用此方法时,annCount都会继续递增。例如,地图上有5个注释 - 第一次调用此方法时,它会按预期返回5。但第二次它被称为它返回11,然后是16,21,26等等。
MKMapRect visibleMapRect = myMapView.visibleMapRect;
NSSet *visibleAnnotations = [myMapView annotationsInMapRect:visibleMapRect];
annCount = [visibleAnnotations count];
NSLog(@"%u", annCount);
return annCount;
我在想是否可以清除NSSet中的所有对象,它会正常工作。但是,NSSET将无法识别deleteAllObjects。我已经尝试过NSMutableSet,但它不适用于“annotationsInMapRect:visibleMapRect”。欢呼声。
答案 0 :(得分:1)
您的问题不在于返回的NSSet
。您的问题是annotationsInMapRect:
返回的对象多于预期。这让我相信你会在地图上添加越来越多的注释(可能是错误的)。
NSSet
是一个不可变集合,因此您无法在实例中添加或删除对象。此外,当visibleAnnotations
被释放时,它会释放其中的所有对象。由于annotationsInMapRect:
会返回新对象,即使您能够拨打removeAllObjects
也无关紧要。