在运行ios 5的设备上,我的应用效果很好,但在运行ios 4.2.1的设备上,我遇到了这个崩溃。 奇怪的是,只有在未连接到xcode时设备才会崩溃。 当从xcode运行时它可以工作,但是当我在没有xcode的情况下运行它时,应用程序正在工作,直到我调用该方法:
- (void)startLocationUpdates
{
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
self.locationManager.distanceFilter = 1;
self.locationManager.delegate = self;
[self.locationManager startUpdatingLocation];
}
CRASH LOG:
OS Version: iPhone OS 4.2.1 (8C148)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x3830000f
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x33479462 objc_msgSend + 14
1 CoreLocation 0x34371430 -[CLLocationManager onClientEventLocation:] + 560
2 CoreLocation 0x3436f68e -[CLLocationManager onClientEvent:supportInfo:] + 98
3 CoreLocation 0x3436f804 OnClientEvent + 16
4 CoreLocation 0x3436b522 CLClientInvokeCallback(__CLClient*, CLClientEvent, __CFDictionary const*) + 42
5 CoreLocation 0x3436d3cc CLClientHandleDaemonDataLocation(__CLClient*, CLClientLocation const*, __CFDictionary const*) + 196
6 CoreLocation 0x3436d512 CLClientHandleDaemonData(__CFMessagePort*, long, __CFData const*, void*) + 286
7 CoreFoundation 0x33a813fe __CFMessagePortPerform + 242
8 CoreFoundation 0x33a556f8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
9 CoreFoundation 0x33a556bc __CFRunLoopDoSource1 + 160
10 CoreFoundation 0x33a47f76 __CFRunLoopRun + 514
11 CoreFoundation 0x33a47c80 CFRunLoopRunSpecific + 224
12 CoreFoundation 0x33a47b88 CFRunLoopRunInMode + 52
13 GraphicsServices 0x33b0e4a4 GSEventRunModal + 108
14 GraphicsServices 0x33b0e550 GSEventRun + 56
15 UIKit 0x32099322 -[UIApplication _run] + 406
16 UIKit 0x32096e8c UIApplicationMain + 664
17 MyApp 0x00002762 0x1000 + 5986
18 MyApp 0x00002720 0x1000 + 5920
答案 0 :(得分:2)
在您销毁self
之前,您确定self.locationManager.delegate = nil;
是否一直存在并且设置self
吗?
答案 1 :(得分:0)
如果您的设备已经包含在您的配置文件中,那么这可能会发生(可能至少在xcode 4.2上)。
首先,检查手机的“名称”是否与您个人资料中的“名称”相匹配(最后一次更新为xcode)。
检查您的设备是否列出(在您的配置文件中),其中包含与Xcode相同的“名称”
我通过
解决了我的问题或者,您可以从配置文件(在developer.apple.com中)中禁用(排序类似删除)设备,然后从“全新”设备开始全面启动。但苹果对开发人员的行为非常挑剔,我不会去删除和重新创建设备,因为他们可能会开始对你的审批人员造成干扰,这会耗尽你的时间。
清除你的钥匙串,特别是如果你发现像com.apple.kerberos.kdc com.apple.systemdefault
这样的东西可能是另一种解决方案,特别是如果XCODE在其自身崩溃(Xcode有时因钥匙链垃圾而崩溃)。
最后一招,重新安装xcode(你知道苹果,如果它不工作并删除首选项无法解决它,重新安装它)。