MKMapView 在卸载和加载后忽略注释(内存警告)



请帮我克服这个障碍。我有一个MKMapView,大约有200个注释。当我点击其中一个时,一个详细视图会被推入UINavigationController,因此MKMapView会被隐藏。在浏览显示的详细信息视图时,我收到内存警告,隐藏视图被卸载。关闭显示的详细信息视图后,将再次加载带有MKMapView的视图,但没有可见的注释(除了"用户位置"蓝色气泡),并且焦点将重置为默认值。未调用[mapView:viewForAnnotation:]。

即使我删除了viewDidUnload中的所有注释,并在viewDidLoad中插入了新的注释,MKMapView也不会显示它们,即使每个注释都会调用[mapView:viewForAnnotation:]。

任何想法如何使其行为并在卸载后保持相同的可见映射矩形&负载非常感谢。

编辑-已解决!问题是在initWithNibName中,我得到了

map=(MKMapView*)[self.view viewWithTag:TAG_map];

从那一刻起,我只使用"map"变量。但在重新加载之后,变量显然指向了一个无效对象。所以我把上面的命令移到了viewDidLoad中,现在它起了作用。感谢克雷格为我指明了正确的方向!

也许您在重新加载过程中与MKMapView或其代理分离。您可以考虑修复内存警告,或者更改映射初始化代码,以确保在viewdidload期间调用的内容与初始加载相同。不过,可能值得在viewDidLoad上查看一下,我想我听说它在iOS 6中受到了不同的对待。

最新更新