【发布时间】:2013-12-23 20:51:11
【问题描述】:
我的应用监控用户位置,包括一些后台位置监控。
我的 App Delegate 中有一个位置管理器,主要用于初始启动位置以及后台更新。然后我的视图控制器(地图)中有另一个管理器,用于更具体的事件和快速参考。
我想知道将其重构为一个实例,保存在 App Delegate 中,并在整个应用程序中使用以下方法引用它是否是一种好习惯:
self.appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[self.appDelegate.locationManager startUpdatingLocation];
【问题讨论】:
-
方法有很多,但是appdelegate是合理的。或者,您也可以在其自己的类中拥有一个单例 - 通过属性公开的静态 CLLocationManager 对象。
-
遵循 MVC,您的视图控制器应该……控制您的视图。应该告诉要显示什么数据,并且它的逻辑都应该与用户如何查看数据以及如何与数据交互相关。它应该不负责从 Web 服务器或 CLLocationManager 获取数据。因此,除非您的应用非常简单,否则 CLLoctionManager 既不属于您的应用委托也不属于您的视图控制器。
标签: ios objective-c cllocationmanager