我的应用程序监视用户位置,包括一些背景位置监视。在我的AppDelegate中保留一个CLLocationManager是否是一种好习惯?
我在我的App Delegate中有一个位置管理器,主要用于初始启动位置以及后台更新。然后,我在视图控制器(地图)内部安排了另一位经理,以获取更具体的事件和快速参考。
我想知道,如果它是重构为一个实例就是一个很好的做法,保持应用程序委托,并使用引用它整个应用程序:
self.appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[self.appDelegate.locationManager startUpdatingLocation];
有很多方法可以做到,但应用程序委托是合理的。或者,你也可以在自己的类中拥有一个单例 - 一个通过属性公开的静态CLLocationManager对象。 – EricS
在MVC之后,您的视图控制器应该...控制您的视图。应该*告诉*要显示什么数据,其逻辑应该与用户如何看待数据以及如何与数据交互有关。它不应该负责从Web服务器或CLLocationManager获取数据。因此,除非您的应用程序非常简单,否则CLLoctionManager既不属于您的应用程序委托也不属于您的视图控制器。 –