您好我在Monotouch中编写了一个iOS平铺地图组件,要求我从父UiView中删除并添加大量(标记)UIViews作为主线程的一部分。
我专门为引脚实现群集。当它们变得靠近时,它们聚集成节点,显示节点所代表的引脚数。根据缩放级别,我需要在进出节点时添加和删除引脚
添加视图很好,因为可以使用
批量完成 _parentView.AddSubviews (viewsToAdd.ToArray());
加上它可以分块。
但是删除会影响我的表现,因为必须使用
删除每个单独的视图view.RemoveFromSuperview ();
view.Dispose ();
有没有办法加快手术速度?
我考虑将视图放入NsArray并使用performSelector从superview中删除但我无法在单声道触摸中找到正确的语法
谢谢卢克
答案 0 :(得分:0)
我认为您应该考虑回收您的观点,而不是处理它们并创建新的观点。这是Apple MKMapView
提供的内容,但如果您使用它,则不提。它的工作原理是添加一些MKPlacemark
个对象,当您在地图上滚动时,这些对象由MKAnnotationView
可循环播放的视图表示。
Xamarin的现场服务应用程序中使用MKMapView's
DequeueReusableAnnotation
方法有一个合理的example。向下滚动到MapViewDelegate
嵌套类。
如果您使用的是其他地图库,例如Google地图,则应考虑保留Queue<T>
个观看点以便回收它们。这样您就可以只调用AddSubview
和RemoveFromSuperview
,而不是一遍又一遍地创建新对象。