代码之家  ›  专栏  ›  技术社区  ›  Crystal

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

  •  7
  • Crystal  · 技术社区  · 15 年前

    如果我有一个标签栏应用程序,并计划在不同的标签中使用核心位置,有没有一个好的公共位置放置用于分配/初始化cllocationmanager的代码,并在调用startupdinglocation后获取更新?或者,如果它将在两个不同的选项卡中使用,那么我是否只是将它放入每个选项卡的代码中?只是想知道什么是最佳实践,因为我刚开始编程。谢谢。

    3 回复  |  直到 15 年前
        1
  •  1
  •   justin    15 年前

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

    注意保持干燥(不要重复)。当你编写了一些应用程序时,将会有很多重复的功能。最好只写一次,并且正确地写。

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

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

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

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

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

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

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

    现在已经有了

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

    如果这在分析方面不充分, 然后 考虑使用一个共享对象,它将消息传递给需要更新的对象(在应用程序中)。

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

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

        2
  •  5
  •   gcamp    15 年前

    我不同意约翰的观点,AppDelegate是一种“简单”的方法,但并不总是更好。

    我想单件做这个。你可以看看Matt Gallagher的文章 Singletons, AppDelegates and top-level data 供参考。

        3
  •  -3
  •   John Franklin    15 年前

    应用程序委托是此类数据的一个很好的中心位置。您可以随时使用 [[UIApplication sharedApplication] delegate]