2

在运行 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];
} 

崩溃日志:

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
4

2 回答 2

2

你确定你self一直在使用它并且self.locationManager.delegate = nil;在你破坏之前设置它self吗?

于 2011-11-24T02:31:40.730 回答
0

如果您在将设备包含在您的配置文件中之后对其进行了维修,则可能会发生这种情况(至少在 xcode 4.2 上)。

首先,检查您手机的“姓名”是否与您个人资料中的“姓名”匹配(上次在 xcode 中更新时)。

  1. 打开 Xcode
  2. 点击组织者 在 XCODE 中打开 ORGANIZER
  3. 选择设备 选择设备
  4. 在 LIBRARY 下,单击 PROVISINING PROFILES
  5. 阅读 iOS TEAM PROVISIONING PROFILE 的标题(您应该有一个设备“名称”列表)
  6. 您最后连接的设备应列在设备下(即使目前未连接) 步骤 4 到 6

检查您的设备是否与 Xcode 在其上读取的“名称”相同(在您的配置文件中)

我解决了我的问题

  1. 上线@developer.apple.com,
  2. 登录会员区,
  3. 选择 iOS 开发者,
  4. 然后在右侧菜单中选择证书、ETC 和
  5. 从我的配置文件中编辑设备。 选择设备配置文件进行编辑
  6. 在 XCODE 中,在 PROVISIONING PROFILES 窗口(上图)中,单击 REFRESH(右下角)

或者,您可以从您的配置文件(在 developer.apple.com 中)禁用(有点像删除)该设备,然后重新开始,就像使用“新”设备一样。但是苹果对开发人员的行为非常挑剔,它不会到处删除和重新创建设备,因为它们可能会开始对您的批准进行人为干扰,这会占用您的时间。

清除您的钥匙串,特别是如果您发现com.apple.kerberos.kdc com.apple.systemdefault可能是其他解决方案,特别是如果 XCODE 自己崩溃(Xcode 有时会因为钥匙串垃圾而崩溃)。

最后的手段,重新安装xcode(你知道苹果,如果它不起作用并且删除首选项不能解决它,重新安装它)。

于 2013-05-16T18:47:56.537 回答