我这里有一个方法可以计算 map View 上的注释数量。然而,每次调用此方法时,annCount 都会不断增加。例如, map 上有 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”。干杯。
最佳答案
您的问题不在于返回的 NSSet
。您的问题是 annotationsInMapRect:
返回的对象比您预期的多。这使我相信您向 map 添加了越来越多的注释(可能是错误的)。
NSSet
是一个不可变的集合,因此您不能在实例中添加或删除对象。此外,当 visibleAnnotations
被释放时,它会释放其中的所有对象。由于 annotationsInMapRect:
返回一个新对象,因此即使您能够调用 removeAllObjects
也没有关系。
关于ios - 如何从 NSSet 中删除所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967247/