在哪里放置iPhone的通用代码,CLLocationManager
如果我有一个标签栏应用程序,并计划在不同标签中使用核心位置,那么是否有一个很好的通用位置来放置用于分配/初始化CLLocationManager的代码,并在调用startUpdatingLocation后获取更新? 或者,如果要在两个不同的选项卡中使用它,那么请将它放入每个选项卡的代码中? 只是想知道什么最佳实践,因为我是编程新手。 谢谢。
如果你注意到你正在复制你写的内容,或者面临编写代码的问题,请考虑创建一个接口(对象,设置函数等)来处理这些任务。
看干(不要重复自己)。 在您编写几个应用程序时,会有很多重复的功能。 最好写一次,并且写得正确。
这里有一些高层次的指导方针:
请勿将特定于应用程序的功能放在通用界面中(而应使用2个项目共享的子类)
始终保持您的基地免受黑客攻击(除非您正在处理系统库中的问题)。 如果客户(例如,子类,呼叫者)需要特定的解决方法或需要特定的检查,那么最好让他们处理它。
使用断言来确保它们按照预期使用接口,检查每个参数,前提条件/后置条件,对象的状态等。
保持您的物体/接口非常小且可维护,并有明确的用途。 自然,这将导致更多的对象。
避免使用单例和静态数据的冲动; 几乎总是有一种更好的方式,即使这很简单,只要强迫客户创建一个类的实例。
用这些接口创建库,并将它们逻辑分开。
现在已经涵盖了......
我会开始使用(可能多个)您需要的对象的实例。 在文档中没有提到“你不应该创建该对象的多个实例”。
如果这在分析方面有些不足,那么考虑使用一个共享对象,它将消息转发给需要更新的对象(在您的应用程序中)。
理由:有可能,苹果已经优化了实施,所以你不必这样做。
最后,我在一个需要大量位置请求的应用程序中打破了这些准则,并显示了大量的位置信息。 该应用程序在存储位置管理器和位置的界面后面使用了一些静态数据(等等)。 所以我最终使用静态数据与私人(隐藏)静态数据来减少在这种情况下的内存和CPU需求。
我不同意约翰,AppDelegate是一种“简单”的方式来做到这一点,但并不总是更好。
我会用一个单身人士来做这件事。 你可以看看Matt Gallagher关于单身人士,AppDelegates和顶级数据的文章以供参考。
应用程序代表是此类数据的良好中心位置。 您可以随时通过[[UIApplication sharedApplication] delegate]
应用程序委托,
上一篇: Where to put common code for iPhone, CLLocationManager
下一篇: Why does my python interactive console not work properly?