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

Cry*_*tal 7 iphone cllocationmanager

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

gca*_*amp 5

我不同意约翰,AppDelegate是"简单"的方式,但并不总是更好.

我会用单身人士做这件事.您可以查看Matt Gallagher关于Singletons,AppDelegates和顶级数据的文章以供参考.

  • AppDelegate本身就是一个单身人士.这只是一个封装问题.针对不同任务的不同单身人士.你必须尽可能避免它们,但有时它们是必要的.是否有更好的方法来制作类似NSFileManager,NSUserDefaults而非单身人士的类?通过AppDelegate访问它们?我不这么认为. (2认同)

jus*_*tin 1

如果您发现自己正在重复所编写的内容,或者面临着编写现有代码的情况,请考虑创建一个接口(对象、集合函数等)来处理这些任务。

\n\n

请参阅 DRY(不要重复)。当您编写一些应用程序时,将会有很多重复的功能。最好写一次,并且写正确。

\n\n

以下是一些高级指南:

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

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

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

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

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

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

  • \n
\n\n

现在已经涵盖了\xe2\x80\xa6

\n\n

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

\n\n

如果这在分析方面不够充分,那么请考虑使用共享对象,该对象将消息中继到需要更新的对象(在您的应用程序中)。

\n\n

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

\n\n

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

\n