【发布时间】:2014-03-25 09:25:48
【问题描述】:
在我的 iOS7 应用程序中,我有一个名为 ICVModel 的单例。当应用程序启动时,这个单例会被初始化并创建CLLocationManager,它会立即开始更新位置。这很好用,CLLocationManager 是ICVModel 中的一个强大属性。我已经实现didUpdateLocations: 始终将最后一个位置保存到ICVModel 在这个单例上的强属性。
我的问题是,当应用程序进入后台并再次激活时,我总是在didUpdateLocations: 中得到 EXC_BAD_ACCESS
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
[ICVModel sharedSingleton].lastLocation = [locations lastObject]; //EXC_BAD_ACCESS
}
我的应用也使用基于区域的通知,所以在这种情况下,当应用处于后台时(并且 ICVModel 已被释放?)是否有可能调用此方法?
我不知道为什么...非常感谢!
【问题讨论】:
-
其中一个很可能是 nil,你能在代码行前面放一个 NSLog 来显示它们的内容吗
-
我认为你的单例实现有问题,但肯定设置一个异常断点并查看回溯
-
很好地启用僵尸并试图查看是什么导致它在这种情况下没有任何结果......我了解 exc_bad_access 是什么以及它为什么会导致,但我不知道为什么它在这种情况下被解雇: )
-
那么它们中的任何一个都是 nil 吗?
标签: ios iphone exc-bad-access cllocationmanager cllocation