我正在开发一个应用程序,它有几个使用用户当前位置的视图控制器。由于用户当前位置应该是相同的,无论我在哪个视图中,我认为在视图控制器之间共享此位置是有意义的。我应该在应用程序委托中定义一个CLLocation,然后将每个视图控制器usersCurrentLocation
设置为与此匹配?当位置由一个视图控制器更新时,我如何确保其他视图控制器中的每个视图控制器都能获取更改?对我来说,这听起来像是一个全球变量的工作,但我知道他们不是一个非常'可可'的做事方式。什么是正确的方法来做到这一点?代码示例会很有帮助。如何在我的应用程序中共享CLLocation?
0
A
回答
1
单身人士是完美的Cocoa做事方式,在应用程序启动时实例化的“位置管理器”单身人士(或任何您选择调用它的人)不仅可以将信息提供给任何需要该信息的信息,而且还可以定期检查位置更改并将通知发送给任何听众。
马特加拉格尔a great job of explaining singletons on his blog,并包括一个超级方便的宏来做繁重的工作。
0
不要将位置指定为属性,而应将CCLocationManager视为属性。同样数量的工作并保持最新状态......只要您需要当前位置,只需发送location
消息即可。
0
这是一个哲学问题。如果它只是一个小数据,那么是的,你的应用程序委托中的一个命名属性是处理它的好方法。特别是如果它是应用程序的属性(就像它在物理上运行的地方一样)。我不介意。
更多的数据比,我更喜欢创建一个单独的数据管理器类,所以可以得到在全球范围内,但有自己的命名空间。
如果我是你,我会让你所有的位置管理代码都存在于应用程序委托本身中,并将个别viewcontrollers看作委托的位置管理器的“客户端”,从委托的.currentLocation中获取当前状态(或其他)财产。
如果你能处理不时有些玄乎的准确性,您也可以考虑使用“上显著变化更新” CLLocationManager的模式,而不是活生生的GPS跟踪。
相关问题
- 1. 如何在我的Angular应用程序中共享ng-template?
- 2. 如何通过消息共享应用程序共享应用程序链接
- 3. 如何共享应用程序设置
- 4. Windows桌面共享API:如何共享一个应用程序
- 5. 如何为我的应用程序启用文件共享?
- 6. 在iOS应用程序中共享Sqlite与iTune文件共享。
- 7. 应用程序共享
- 8. 如何添加共享按钮到我的Android应用程序
- 9. 如何共享我的Java应用程序
- 10. 如何添加屏幕共享到我的应用程序
- 11. 通过我的应用程序在xamarin.forms中共享图像
- 12. 如何让我的应用程序显示在可共享音频的可用应用程序中
- 13. 如何在应用程序中获得共享首选项?
- 14. 如何在Metro应用程序中调试共享合同?
- 15. 如何在android中共享应用程序组件?
- 16. 如何在Spring Web应用程序中实现共享功能?
- 17. 如何使我的应用程序在Safari共享选项中可见
- 18. 如何在java中编写我自己的桌面共享应用程序?
- 19. ASP.NET MemoryCache在应用程序间共享
- 20. 应用程序之间共享在C#
- 21. 在应用程序之间共享drawables
- 22. 在应用程序内共享数据
- 23. Quickblox共享应用程序的用户
- 24. 我如何共享apk文件在我的应用程序(发送应用程序本身)
- 25. 如何在两个ASP.NET应用程序之间共享应用程序缓存
- 26. 如何与扩展程序共享应用程序ID?
- 27. 我的iPhone中的对象共享应用程序
- 28. Xcode - 如何与客户共享开发中的应用程序?
- 29. 如何让Symfony中的两个应用程序共享组件?
- 30. 在我的iOS应用程序中使用地图共享我的位置?