gpt4 book ai didi

iphone - 关于 CLLocation Manager 和多个 ViewController 的一些架构问题

转载 作者:行者123 更新时间:2023-12-03 16:34:36 26 4
gpt4 key购买 nike

首先,如果这个问题很愚蠢,我很抱歉,但我是 ObjC 的新手。在我的 iPhone 应用程序中,我在唯一的 ViewController 中有一个 CLLocationManager 实现,因为我只有一个 View 。不,我希望应用程序中有更多 View ,并且每个 View 都需要来自 CLLocationmanager 的位置信息。

所以,我想我必须将实现从 ViewController 移到我的 AppController 中,因为我不想在每个 ViewController 中实现 CLLocationManager,对吗?

但是现在,我真的不知道ViewCotrollers如何获取位置信息?我想到实现一个 Singleton 类,在其中存储信息,并且每个 VieController 都可以从那里获取信息。但为此我必须在 ViewController 中实现一个计时器或类似的东西,以便它们每秒检查是否有新数据可用。这听起来不太好而且蹩脚。

ViewController如何自动获取新的Position信息?也许我需要像观察者这样的东西,但也许 Cocoa/ObjC 中已经准备好了一些东西?我认为我的申请方向错误。

非常感谢您的帮助

特维克

最佳答案

这是我突然想到的一个建议,可能可以作为一个有用的起点。您的想法是正确的,您不想重复代码来设置每个 ViewController 中与 CLLocationManager 的连接。但是,我不会将该代码移动到您的 AppController 中(我假设您指的是 AppDelegate)。

我将创建一个通用的 ViewController 子类并将其命名为 LocationAwareViewController 之类的名称。 LocationAwareViewController 将负责创建到 CLLocationManager 的连接并“注册”更新。

我会将 LocationAwareViewController 设置为 CLCLocationManager 的委托(delegate)。然后,LocationAwareViewController 将实现部分或全部 CLLocationManagerDelegate 方法。现在,只要有新的位置信息可用,此 ViewController 就会收到更新。您不必设置任何轮询计时器。

每个特定的 ViewController 都将是 LocationAwareViewController 的子类。他们还可以重写 CLLocationManagerDelegate 方法来为他们负责的 View 执行特定操作。

一个免责声明:我还没有机会使用 Core Location,所以我对 CLLocationManager 如何工作的期望仅基于文档。它看起来很简单,但也许其他人可以根据他们的经验提供更多信息。

关于iphone - 关于 CLLocation Manager 和多个 ViewController 的一些架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com