ios - 如何从 NSSet 中删除所有对象

标签 ios objective-c mapkit

我这里有一个方法可以计算 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/

相关文章:

objective-c - 禁用 WebView 的拖放以支持其 super View 之一

ios - 如何添加多个注释?

ios - 添加新授权过程后 MapKit 崩溃

ios - Angular2 - Google 表单在 iOS 上没有响应

ios - NSNotificationCenter 是否 removeObserver : deregister a VC from receiving MemoryWarning Notifications?

ios - NSNotificationCenter 观察者未收到通知

ios - 仅限某些 iOS 目标设备用于 App Store 提交

swift - MKPolyLine swift 4

ios - 如何恢复现有 View

ios - 将 AVCaptureDeviceInput 添加到 CaptureSession 会重置/重新聚焦视频