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

时间:2010-10-25 16:54:01

标签: iphone cllocationmanager

如果我有一个标签栏应用程序,并计划在不同标​​签中使用Core Location,是否有一个很好的共同位置来放置用于分配/初始化CLLocationManager的代码,并在调用startUpdatingLocation后获取更新?或者,如果它将在两个不同的选项卡中使用,那么我是否只需将其放入每个选项卡的代码中?只是想知道自从我刚接触编程以来最佳实践是什么。感谢。

3 个答案:

答案 0 :(得分:5)

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

我会用单身人士做这件事。您可以查看Matt Gallagher关于Singletons, AppDelegates and top-level data的文章以供参考。

答案 1 :(得分:1)

如果您注意到您正在复制您所写的内容,或者面对编写存在的代码,请考虑创建一个接口(对象,设置函数等)来处理这些任务。

见DRY(不要重复自己)。当你编写一些应用程序时,会有很多重复的功能。最好写一次,然后写得正确。

这里有一些高级指南:

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

  • 始终保持您的基地没有黑客攻击(除非您正在处理系统库中的问题)。如果客户端(例如,子类,呼叫者)需要特定的解决方法或需要特定检查,那么最好让他们处理它。

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

  • 保持您的对象/界面非常小和可维护,明确的目的是使用它们。当然,这将导致更多的对象。

  • 避免使用单例和静态数据的冲动;即使只是强迫客户创建一个类的实例,也几乎总有一种更好的方法。

  • 使用这些接口创建库,并按逻辑划分它们。

现在已经涵盖......

我首先使用您需要的对象(可能是多个)实例。文档中没有任何内容表明“您不应该创建对象的多个实例”。

如果这在分析中不合适,那么然后考虑使用共享对象将消息中继到需要更新的对象(在您的应用程序中)。

理由:机会是,苹果已经优化了实施,所以你没必要。

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

答案 2 :(得分:-3)

App Delegate是此类数据的良好中心位置。您随时可以使用[[UIApplication sharedApplication] delegate]

访问应用代表