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
    时,暂停singleton
    CLLocationManager
    ,然后在其消失时重新启动。这样,一次只更新一个位置管理器,我仍然可以使用
    MKMapView
    上的用户跟踪。然而,仍然会有两个对象收集位置数据,这似乎是糟糕的编码

  • 仅使用singleton
    CLLocationManager
    ,并通过在应用程序中发布通知来更新地图中心


  • 目前,我倾向于选择1。然而,我对
    MKMapView
    的首选方法和另一个需要位置信息的视图(关于如何在整个应用程序中更新位置)非常感兴趣,希望有人能告诉我正确的方法是什么。谢谢

    只要告诉MKMapView跟踪用户的位置,让iOS来担心就行了。我怀疑有两个对象处理位置更新会对您的内存或CPU使用产生任何影响为什么不使用一个代理,并在出现
    视图时相应地分配该代理?在单身时,当您注意到您的代理被设置为nil(
    视图将消失
    )时,可以停止
    didUpdateLocation
    )。这样,当您切换到不需要位置的viewcontroller时,您可以停止位置更新。只需告诉MKMapView跟踪用户的位置,并让iOS担心它。我怀疑有两个对象处理位置更新会对您的内存或CPU使用产生任何影响为什么不使用一个代理,并在出现
    视图时相应地分配该代理?在单身时,当您注意到您的代理被设置为nil(
    视图将消失
    )时,可以停止
    didUpdateLocation
    )。这样,当切换到不需要位置的viewcontroller时,可以停止位置更新。