Iphone 如何停止来自其他类/视图的位置更新?

Iphone 如何停止来自其他类/视图的位置更新?,iphone,objective-c,ios,Iphone,Objective C,Ios,我目前正在开发一个应用程序,允许用户跟踪他们进行的各种“旅行” 该应用程序由两个视图组成。第一个视图由2个按钮组成,允许用户启动和停止当前“行程” 按下开始按钮可进入第二个视图,该视图基本上在地图上显示当前行程 我遇到的问题是停止旅行。当用户希望停止行程时,只需在第一个视图中点击停止按钮即可。我想停止位置更新,因为它们不再需要 问题是位置管理器位于第二个视图中,因此我无法从第一个视图调用stopLocationUpdates方法 我所尝试的: 我已经设置了一个通知,告诉第二个视图停止位置更新。问

我目前正在开发一个应用程序,允许用户跟踪他们进行的各种“旅行”

该应用程序由两个视图组成。第一个视图由2个按钮组成,允许用户启动和停止当前“行程”

按下开始按钮可进入第二个视图,该视图基本上在地图上显示当前行程

我遇到的问题是停止旅行。当用户希望停止行程时,只需在第一个视图中点击停止按钮即可。我想停止位置更新,因为它们不再需要

问题是位置管理器位于第二个视图中,因此我无法从第一个视图调用stopLocationUpdates方法

我所尝试的: 我已经设置了一个通知,告诉第二个视图停止位置更新。问题是,只有在再次加载第二个视图时才会调用此函数。这是无用的,因为在停止行程时,第二个视图将永远不会加载(直到另一个行程开始)


提前感谢您的帮助。

使用
NSNotification
是向应用程序组件通知事件的正确方法。你应该调查一下为什么这不起作用。或者,您可以在应用程序委托中拥有指向这两个视图的指针,并通过调用
[UIApplication sharedApplication].delegate从任意位置调用它

首先,
NSNotification
对视图控制器的状态完全没有任何线索。所以,如果它只在加载时开始侦听,可能是因为您开始侦听加载时的通知。您也可以在指定的初始值设定项中执行此操作,这可能会解决您的问题


但是,可能需要重新考虑一起删除视图控制器?如果它根本不被使用,那么为什么首先要把它保存在内存中呢?您可以简单地发布它。

我认为一个好的选择是:

  • 在第二个视图中使用停止位置更新的方法创建协议,并为此协议创建属性委托
-在第一视图控制器中实现协议

-将第二个视图控制器的委托指定给第一个视图控制器


这应该可以正常工作

视图仅在加载时获取通知这一事实使得NSNotification在我的情况下毫无用处。我将研究你关于使用sharedApplication的建议。研究一下“单例”模式。我承认释放视图控制器可能是最好的做法。如何从第一个视图内部释放指向第二个视图的指针?