在哪里放置iPhone的通用代码,CLLocationManager

在哪里放置iPhone的通用代码,CLLocationManager,iphone,cllocationmanager,Iphone,Cllocationmanager,如果我有一个选项卡栏应用程序,并计划在不同的选项卡中使用Core Location,是否有一个好的公共位置来放置用于alloc/init CLLocationManager的代码,并在调用startUpdatingLocation后获得更新?或者,如果它将在两个不同的选项卡中使用,那么我是否要将它放入每个选项卡的代码中?我只是想知道什么是最佳实践,因为我是编程新手。谢谢。应用程序代理是这些数据的一个很好的中心位置。你总是可以通过[[UIApplication sharedApplication]

如果我有一个选项卡栏应用程序,并计划在不同的选项卡中使用Core Location,是否有一个好的公共位置来放置用于alloc/init CLLocationManager的代码,并在调用startUpdatingLocation后获得更新?或者,如果它将在两个不同的选项卡中使用,那么我是否要将它放入每个选项卡的代码中?我只是想知道什么是最佳实践,因为我是编程新手。谢谢。

应用程序代理是这些数据的一个很好的中心位置。你总是可以通过
[[UIApplication sharedApplication]delegate]

我不同意John的观点,AppDelegate是一种“简单”的方式,但并不总是更好


我会和一个单身汉一起做这件事。你可以查看Matt Gallagher的文章以供参考。

如果你注意到你正在复制你所写的东西,或者面对存在的编写代码,考虑创建一个接口(对象,设置函数等)来处理这些任务。p> 保持干燥(不要重复)。当你编写一些应用程序时,将会有很多重复的功能。最好写一次,并且写得正确

以下是一些高级指导原则:

  • 不要将特定于应用程序的功能放在公共界面中(而是使用两个项目共享的子类)

  • 始终保持您的基础不受黑客攻击(除非您正在处理系统库中的问题)。如果客户机(例如,子类、调用方)需要特定的解决方法或需要特定的检查,那么最好让他们处理它

  • 使用断言以确保它们按预期使用接口,检查每个参数、前置条件/后置条件、对象的状态等

  • 使对象/接口保持非常小且可维护,并明确其预期用途。当然,这将导致更多的对象

  • 避免使用单一数据和静态数据的冲动;几乎总是有更好的方法,即使它像强制客户机创建类的实例一样简单

  • 使用这些接口创建库,并对它们进行逻辑划分

现在已经涵盖了

首先,我将使用您需要的对象的(可能有多个)实例。文档中没有说明“不应创建对象的多个实例”

如果在概要文件中有某种不足,那么考虑使用一个共享对象,它将消息转发给需要更新的对象(

)。 理由:很可能苹果已经优化了实现,所以你不必这么做


最后,我在一个需要大量位置请求并显示大量位置信息的应用程序中打破了这些准则。该应用程序在存储位置管理器和位置(以及其他内容)的界面后面使用了一些静态数据。因此,我最终将静态数据与私有(隐藏)静态数据一起使用,以减少这种情况下的内存和cpu需求。

我不同意使用单例。我认为单体与全局变量一样差,不,它们是全局变量,尽可能避免它们。我得到了“AppDelegate大泥球”参数,但如果你的AppDelegate过载,你可能需要重构。快速搜索SO表明我持有这种观点。AppDelegate本身就是一个单例。这只是封装的问题。不同任务的不同单例。你必须尽可能避免它们,但有时它们是必要的。有没有更好的方法来创建NSFileManager、NSUserDefaults之类的类而不是Singleton?是否通过AppDelegate访问它们?我不这么认为。AppDelegate归UIApplication所有,UIApplication是整个应用程序的根对象,并且(在purist视图中)是唯一允许的有效单例。哪个purist?我从未见过有人认为UIApplication应该是应用程序中唯一的单例。(顺便说一下,主窗口nib拥有应用程序委托,而不是UIApplication。UIApplication不保留其委托。)