2011-11-24 4 views
2

ios 5를 실행하는 기기에서 내 앱은 훌륭하게 작동하지만 iOS 4.2.1을 실행하는 기기에서는이 충돌이 발생합니다. 이상한 점은 xcode에 연결되지 않은 경우에만 장치가 다운되는 것입니다. 엑스 코드에서 실행하면 작동하지만 난 앱이 순간까지 노력하고 엑스 코드없이 실행할 때 내가 메서드를 호출 :장치가 xcode에 연결되지 않은 경우에만 iPhone 충돌이 발생합니다. 충돌 로그를 이해하는 방법은 무엇입니까?

- (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 

답변

2

self 살고 당신 있는지됩니다 항상 사용하고 self을 파괴하기 전에 self.locationManager.delegate = nil;을 설정 했습니까?

+0

self는 앱이 끝날 때까지 생기는 viewController입니다. 하지만 문제가 startLocationUpdates에 없지만 stopLocationUpdates에 있음을 알았습니다. - (void) stopLocationUpdates { [self.locationManager stopUpdatingLocation]; self.locationManager.delegate = nil; self.locationManager = nil; <- 이것은 충돌을 일으키는 원인입니다! } – Eyal

+0

다행이 halped;) 내가 가속도계와 동일한 문제가 : 하드웨어에서 데이터를 recived, 개체를 죽이고 하드웨어가 데이터를 계속 보내려고합니다. 이것이 충돌의 이유입니다. – SentineL

0

프로비저닝 프로파일에 장치가 포함 된 후에 장치를 서비스 한 경우이 문제가 발생할 수 있습니다 (적어도 xcode 4.2 이상).

먼저 휴대 전화의 "이름"이 프로필의 "이름"과 일치하는지 확인하십시오 (xcode에서 마지막으로 업데이트 한 경우).

  1. 개방 엑스 코드
  2. 는 주최자 클릭 open ORGANIZER in XCODE
  3. , DEVICES 도서관에서 choose DEVICES
  4. 에게 선택 PROVISINING는
  5. 는 아이폰 OS 팀 프로비저닝 프로파일의 헤더를 읽을 단면도를 클릭 (당신은 목록을 가지고 있어야 장치 이름 ")
  6. 마지막으로 연결된 장치가 장치 아래에 나열되어야합니다 (심지어 장치가"이름 " 장치가 동일한 "이름"으로) 프로비저닝 프로파일에 (나열된 경우 전자 모멘트) steps 4 thru 6

검사는 엑스 코드가

    에 의해

    내가 해결 내 문제가 그것을 읽는 것을 볼 수 회원 영역에 로그인

  1. 가는 온라인 @ developer.apple.com,
  2. ,
  3. 아이폰 OS 개발자를 선택,
  4. 그런 다음 오른쪽 메뉴에서 CERTIFICATES, ETC를 선택하고
  5. 내 프로비저닝 프로파일에서 장치를 편집하십시오. choosing device profile for editing
  6. 엑스 코드, 프로비저닝 프로파일 창 (이전 이미지)에, 개발자에 (당신이 당신의 프로비저닝 프로파일에서 장치를 (그렇다고 삭제 같은) 비활성화 할 수 대안 REFRESH (오른쪽 아래)

을 클릭합니다. apple.com) "새로운"장치와 같이 처음부터 다시 시작하십시오. 애플은 개발자 행동에 대해 까다 롭다. 나는 승인을 위해 인간의 간섭을 시작하기 때문에 기기를 삭제하고 재창조하지 않을 것이며, 그것은 당신의 시계를 먹을 것이다.

com.apple.kerberos.kdc com.apple.systemdefault과 같은 항목이있는 경우 특히 XCODE가 자체에서 크래킹되는 경우 (Xcode가 키 체인 쓰레기로 인해 충돌하는 경우가 있음) 특히 그렇습니다.

마지막으로 xcode를 다시 설치하십시오 (Apple이 작동하고 삭제할 때 환경 설정을 수정하지 않으면 다시 설치해야 함).