7

如果我有一个选项卡栏应用程序,并计划在不同的选项卡中使用核心位置,是否有一个很好的通用位置来放置用于分配/初始化 CLLocationManager 的代码,并在调用 startUpdatingLocation 后获取更新?或者,如果它要在两个不同的选项卡中使用,那么我是否只需将它放在每个选项卡的代码中?只是想知道什么是最佳实践,因为我是编程新手。谢谢。

4

3 回答 3

5

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

我会用单身人士来做这件事。大家可以看看 Matt Gallagher 的关于Singletons、AppDelegates 和顶级数据的文章以供参考。

于 2010-10-25T17:36:30.243 回答
1

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

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

以下是一些高级指南:

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

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

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

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

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

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

现在已经涵盖了……</p>

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

如果这在分析中存在某种不足,考虑使用共享对象将消息中继到需要更新的对象(在您的应用程序中)。

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

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

于 2010-10-25T18:02:37.773 回答
-3

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

于 2010-10-25T17:30:52.103 回答