Ios 使用MKMapView的CLLocationManager避免了多个实例
关于如何正确设置我的应用程序以处理需要位置信息的多个视图,我有一个问题。我有两种观点。一个是具有表视图的普通Ios 使用MKMapView的CLLocationManager避免了多个实例,ios,objective-c,swift,mapkit,cllocationmanager,Ios,Objective C,Swift,Mapkit,Cllocationmanager,关于如何正确设置我的应用程序以处理需要位置信息的多个视图,我有一个问题。我有两种观点。一个是具有表视图的普通UIViewController,另一个是包含MKMapView的UIViewController。现在,这两个视图都需要位置信息。目前,我有一个单例,它实现了一个CLLocationManager,以获取应用程序的所有用户位置信息。但是,我在考虑其他一些可能性,因为每次更新位置以更改地图中心时发送NSNotification似乎不是首选方法,而不是使用MKMapView中的跟踪方法。所以
UIViewController
,另一个是包含MKMapView
的UIViewController
。现在,这两个视图都需要位置信息。目前,我有一个单例,它实现了一个CLLocationManager
,以获取应用程序的所有用户位置信息。但是,我在考虑其他一些可能性,因为每次更新位置以更改地图中心时发送NSNotification
似乎不是首选方法,而不是使用MKMapView
中的跟踪方法。所以,我在考虑几个选择
MKMapView
时,暂停singletonCLLocationManager
,然后在其消失时重新启动。这样,一次只更新一个位置管理器,我仍然可以使用MKMapView
上的用户跟踪。然而,仍然会有两个对象收集位置数据,这似乎是糟糕的编码CLLocationManager
,并通过在应用程序中发布通知来更新地图中心目前,我倾向于选择1。然而,我对
MKMapView
的首选方法和另一个需要位置信息的视图(关于如何在整个应用程序中更新位置)非常感兴趣,希望有人能告诉我正确的方法是什么。谢谢只要告诉MKMapView跟踪用户的位置,让iOS来担心就行了。我怀疑有两个对象处理位置更新会对您的内存或CPU使用产生任何影响为什么不使用一个代理,并在出现视图时相应地分配该代理?在单身时,当您注意到您的代理被设置为nil(视图将消失
)时,可以停止didUpdateLocation
)。这样,当您切换到不需要位置的viewcontroller时,您可以停止位置更新。只需告诉MKMapView跟踪用户的位置,并让iOS担心它。我怀疑有两个对象处理位置更新会对您的内存或CPU使用产生任何影响为什么不使用一个代理,并在出现视图时相应地分配该代理?在单身时,当您注意到您的代理被设置为nil(视图将消失
)时,可以停止didUpdateLocation
)。这样,当切换到不需要位置的viewcontroller时,可以停止位置更新。