Iphone UIImagePickerController赢得';不要停止定位服务

Iphone UIImagePickerController赢得';不要停止定位服务,iphone,ios,uiimagepickercontroller,cllocationmanager,Iphone,Ios,Uiimagepickercontroller,Cllocationmanager,基本上,我试图实现的是一个增强现实应用程序。我有地图视图和增强现实视图。 当用户仅查看地图视图,然后返回到UINavigation堆栈中的上一页时,所有位置服务都将停止,箭头工具栏通知将消失。当用户离开地图视图并以模式显示UIImagePickerController时,即使用户按下负责停止所有位置服务并弹出当前视图的按钮,位置服务通知仍将保持不变。 我知道这不是我的CLLocationManager造成的问题,因为正如我所说的,当UIImagePicker从未出现在屏幕上时,错误不会发生。我的

基本上,我试图实现的是一个增强现实应用程序。我有地图视图和增强现实视图。
当用户仅查看地图视图,然后返回到UINavigation堆栈中的上一页时,所有位置服务都将停止,箭头工具栏通知将消失。当用户离开地图视图并以模式显示UIImagePickerController时,即使用户按下负责停止所有位置服务并弹出当前视图的按钮,位置服务通知仍将保持不变。 我知道这不是我的CLLocationManager造成的问题,因为正如我所说的,当UIImagePicker从未出现在屏幕上时,错误不会发生。我的想法是,用于地理定位或相机使用的任何定位服务都不会停止,即使我在弹出当前视图之前缩小了模式视图。
就我的一生而言,我不明白他们为什么不停下来,如果有人知道为什么这会是一个巨大的帮助的话

下面是我现在在方法中调用的代码,该方法用于准备从UINavigation堆栈弹出视图

[_locationManager setDelegate:nil];
[_locationManager stopUpdatingLocation];
[_locationManager stopUpdatingHeading];
[[UIAccelerometer sharedAccelerometer] setDelegate:nil];
if (_imagePickerOn){
    [self dismissModalViewControllerAnimated:YES];   
    _imagePickerOn = FALSE;
}
--编辑-- 下面是我介绍图像选择器的方法,非常基本:

- (IBAction) cameraButtonPressed{
_imagePickerOn = TRUE;
[self presentModalViewController:_imagePicker animated:NO];
}

我假设您正在其他地方提前分配图像选择器控制器。这可能是问题所在,当它的视图离开屏幕时(当你忽略它时),它不会被释放,所以它仍然在内存中,并且可能仍然使用它的位置管理器。这是一个bug,但不是你的bug,所以你不能用你当前的设置来处理它


一种更常见的模式是,当您准备演示UIImagePickerController时,只分配它们,并在调用
-presentModalViewController:animated:
后立即释放它们。它会使您的UI响应性稍差,尤其是在分配复杂的视图控制器时(我不确定图像选择器控制器是否符合要求),但是,您可以从减少内存使用中获益,并有望在不需要位置服务时不再使用位置服务。

您可以发布方法,展示
UIImagePickerController
对象吗?好了,我将其添加到原始问题中,只有当用户想要离开地图视图并转到增强现实视图时,才会调用该方法,并且只有在按下该按钮后,问题才会发生。我在viewDidLoad方法中初始化imagepicker。不清楚该按钮是地图视图的一部分还是图像选择器视图的一部分?您发布的原始代码是在按钮点击时调用的,对吗?调用presentmodalview的按钮位于保存地图视图的UIView上。在我发布这个问题之前,当地图视图或图像选择器视图按下“停止”键时,我发布的原始代码块被调用。我确实尝试过这个问题。我在离开屏幕之前“发布”了它,它仍然显示位置服务通知。我尝试了你建议的更常见的模式,懒洋洋地初始化它并在它出现后立即释放它,不幸的是仍然得到相同的错误,退出时它仍然在顶部工具栏中显示小箭头