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
self는 앱이 끝날 때까지 생기는 viewController입니다. 하지만 문제가 startLocationUpdates에 없지만 stopLocationUpdates에 있음을 알았습니다. - (void) stopLocationUpdates { [self.locationManager stopUpdatingLocation]; self.locationManager.delegate = nil; self.locationManager = nil; <- 이것은 충돌을 일으키는 원인입니다! } – Eyal
다행이 halped;) 내가 가속도계와 동일한 문제가 : 하드웨어에서 데이터를 recived, 개체를 죽이고 하드웨어가 데이터를 계속 보내려고합니다. 이것이 충돌의 이유입니다. – SentineL