如何从NSSet中删除AllObjects

时间:2014-05-31 06:44:49

标签: ios objective-c mapkit

我这里有一个方法可以计算地图视图上的注释数量。但是,每次调用此方法时,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”。欢呼声。

1 个答案:

答案 0 :(得分:1)

您的问题不在于返回的NSSet。您的问题是annotationsInMapRect:返回的对象多于预期。这让我相信你会在地图上添加越来越多的注释(可能是错误的)。

NSSet是一个不可变集合,因此您无法在实例中添加或删除对象。此外,当visibleAnnotations被释放时,它会释放其中的所有对象。由于annotationsInMapRect:会返回新对象,即使您能够拨打removeAllObjects也无关紧要。