因为在多种情况下我想从导航堆栈中弹出一个视图控制器,所以我有一个方法可以做到这一点,并且可以在三个不同的地方调用它。

- (void)dismissSelfCon {
    NSLog(@"dismiss");
    [locationManager stopUpdatingHeading];
    [locationManager stopUpdatingLocation];
    locationManager.delegate = nil;
    mapView.delegate = nil;
    [[NSNotificationCenter defaultCenter] removeObserver:self];

    [[[Trail_TrackerAppDelegate appDelegate] navCon] popViewControllerAnimated:YES];
}

在一种情况下,如果mapView上有注释(我不确定这是否是定义特征,但我认为是),则将调用此方法(并且我确信它被调用是因为@“ dismiss ”打印到控制台),但是位置管理器不会停止发送位置更新! 另外,由于委托未设置为nil,因此应用程序崩溃,因为视图控制器从其为其委托的对象之一接收responsesToSelector:。

这怎么可能?

===============>>#1 票数:0

这最可能的原因是此时的locationManagernil 第一条规则:始终使用访问器; 除了initdeallloc之外,不要直接访问您的deallloc

根据您的描述,我怀疑该对象(带有dismissSelfCon对象)在dealloc期间不会清除locationManager.delegate ,并且您在不调用dismissSelfCon情况下被释放。

===============>>#2 票数:0 已采纳

解决方案是这样的:

我设置视图控制器的方式(我知道这有点奇怪,如果您在这里看到我的问题: 无法分配CLLocationManager ,我正在尝试更改/修复它),正在分配CLLocationManager, viewDidAppear中的委托集等。 我在应用程序期间展示了MFMessageComposeViewController,当它被关闭时,再次调用viewDidAppear,重新分配了CLLocationManager并引起了我的问题。 借助一点布尔魔术,我调整了viewDidAppear代码,以便仅将CLLocationManager设置和分配一次。

  ask by eric.mitchell translate from so

未解决问题?本站智能推荐:

3回复

无法获取当前位置来设置地图中心

我正在学习使用地图,我的目标是在应用程序首次加载时在地图上显示当前位置,而不是显示世界地图。 但我不能把它集中在想要的位置,因为我得到的坐标都是0。 注意: 我已将Xcode设置为日本东京的默认位置。 所有代码都在viewDidLoad中 我正在使用模拟器
2回复

地图:无法放大当前位置

问题 :首次加载地图时,地图无法放大用户的当前位置。 我试图了解我在这里做错了什么。 如您所知,我对此很陌生,请好心:) 。H .m
2回复

CLLocationManager在发布时崩溃,但为什么呢?

这可能是一个愚蠢的问题,一旦指出解决方案,让你觉得很愚蠢想知道你怎么没看到它但我无法弄清楚为什么我的应用程序的这部分与EXC_BAD_ACCESS崩溃(并且没有堆栈跟踪)。 我有一个CLLocationManager * locationManager(在接口文件中声明的ivar),如果启
1回复

MKMapView和CLLocationManager

我想使用MKMapView使用默认的呼吸蓝色针来显示用户当前位置,我想同时记录用户移动。 有没有什么方法可以使用GPS管理器(不确定这是否是一个CLLocationManager)MKMapView在我们启用它时显示用户位置? 我知道我可以创建自己的CLLocationManager。
3回复

CLLocationManager致命错误:在展开可选值Swift时意外发现nil

我有一个问题,因为我的应用程序崩溃,当我试图获得位置用户并在我的.plist中获得我的代码的权限。 日志:致命错误:在展开Optional值时意外发现nil
1回复

使用CLLocationManager和MKReverseGeocoder获取城市名称

我试图通过使用MKReverseGeoCoder获取用户当前位置的城市名称,但它有一些我无法识别的错误。 以下是详细信息: 它有一些我无法识别的错误 在这里;我的代码:
1回复

在iOS模拟器上使用CLLocationManager查找经度和纬度[重复]

这个问题已经在这里有了答案: 定位服务在iOS 8中不工作 26答案 我试图创建一个使用MKMapView打开地图的应用程序,然后通过创建CLLocationManger的委托来找到用户的当前位置。 我已经在下面发布了我的代码。 我现在遇到的问题是,尽管在打
1回复

iOS8何时分配初始化CLLocationManager来调用requestWhenInUseAuthorization?

当我尝试在其getter内分配初始化我的CLLocationManager时,我没有收到针对位置自动化的弹出请求。 但是,当我放入viewDidLoad时,它确实可以工作。 我的代码看起来像这样: 但是当我像这样进行分配初始化时,它不起作用: 谁能向我解释为什么?
1回复

为什么CLLocationManager总是返回true?

我正在使用[CLLocationManager locationServicesEnabled]函数获取状态,无论是否启用了定位服务。 我将代码保存在viewDidLoad方法中。 当我第一次运行该应用程序时,它返回Yes 。 为什么? 它应该返回我No 。 当我没有选择“允许”
7回复

CLLocationManager startUpdatingLocation不起作用

所以现在我至少得到以下代码的回调... 我可以在第二种方法中设置断点,NSLog报告连续的位置更新,但由于某种原因,带有span的缩放不起作用。 知道为什么吗? 它有我的坐标和一切。 在这一个上刮我的头。