2010-09-20 25 views
6

Aralıklı bir kilitlenme gösteren bir uygulamanız var. Kaza kütükleri, benim deşifre etmek için zor olan bir yığın izi gösteriyor, böylece başka birinin bunu gördüğünü ve beni doğru yönde gösterebileceğini umuyorum. Temel olarak uygulama, kullanıcının bir etikette konumunu göstermek için başlangıçta bir ters coğrafi kodlama isteği yapar. Ayrıca, belirli bir API çağrısı için başka bir ters coğrafi kodlama isteği yapıyorum.MKReverseGeocoder neden EXC_BAD_ACCESS?

Neler oluyor bu MKReverseGeocoder'ın bazen geri gelmesi çok uzun zaman alıyor. Sonunda, bir arıza geri çağrısı alacağımı ve bazen de bunu yaptığımı varsayalım, ancak bu gerçekleşmeden önce dakika olabilir.

API çağrısı başka bir MKReverseGeocoder isteği de yayınladığından, belki birden fazla eşzamanlı çağrıyla ilgili bir sorun olduğunu düşünüyorum. o bile benim geri arama yöntemi aradığını gibi görünmüyor yana

Program received signal: “EXC_BAD_ACCESS”. 
(gdb) backtrace 
#0 0x30c237a0 in -[MKPlacemark _mapkit_cache_heapTime]() 
#1 0x30bffe60 in compareTimes() 
#2 0x32403b24 in CFBinaryHeapAddValue() 
#3 0x30c0030c in -[MKCache setObject:forKey:]() 
#4 0x30c2aa48 in -[MKReverseGeocodeCache addPlacemark:forCoordinate:]() 
#5 0x30c2251c in -[MKReverseGeocoder requester:didReceiveResponse:forRequest:]() 
#6 0x3388cc1c in -[PBRequester _tryParseData]() 
#7 0x3388b288 in -[PBRequester connection:didReceiveData:]() 
#8 0x337490ce in -[NSURLConnection(NSURLConnectionReallyInternal) sendDidReceiveData:originalLength:]() 
#9 0x33748ff0 in _NSURLConnectionDidReceiveData() 
#10 0x30899ff8 in URLConnectionClient::_clientDidReceiveData() 
#11 0x3088ca3e in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload() 
#12 0x3088cb40 in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload() 
#13 0x3088cb40 in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload() 
#14 0x3088c8ce in URLConnectionClient::processEvents() 
#15 0x3088c878 in URLConnection::multiplexerClientPerform() 
#16 0x3088c7f8 in MultiplexerSource::perform() 
#17 0x3088c798 in MultiplexerSource::_perform() 
#18 0x323f4f48 in CFRunLoopRunSpecific() 
#19 0x323f4c1e in CFRunLoopRunInMode() 
#20 0x335051c8 in GSEventRunModal() 
#21 0x324a6c30 in -[UIApplication _run]() 
#22 0x324a5230 in UIApplicationMain() 
#23 0x000024f8 in main (argc=1, argv=0x2ffff504) at /Users/ben/projects/ABC/iphone/ABC/main.m:14 

Bu EXC_BAD_ACCESS sorunu aramaya bilmiyorum:

İşte benim StackTrace olduğunu. Temsilcim kesinlikle aktiftir (isteği başlatan View Controller'a bakıyorum).

1 son uyarı: Sadece iOS 3.1.3 sürümünde şu ana kadar ortaya çıktı. Bunu iOS 4.0 için henüz görmedim.

+2

Ters coğrafi kodlamayı yaptığınız kodu gönderir misiniz? Sorununuzu göstermeye yardımcı olabilir – Daniel

+0

Bu özel yığın izlemesi, uygulama başlatıldığında hemen gerçekleşen şeyi gösterir. Başka bir ekranda, daha önce başka bir RGC için çağrı yapan bir uzak API'yi çağıran bir düğme vardır. Bu her zaman çökmez. Bugün yaklaşık 6 testten sadece bir kez oldu. –

+0

Tam olarak aynı soruna vurdum. Ayrı konularda 2 ayrı MKReverseGeocoder örneğini kullanıyorum. Bu benim gereksinim olsa da. Bahsettiğiniz her şey benim için de aynısını uyguluyor. 3.0'da görünür, ancak 4.0+ değil. Bu sorunu nasıl çözdünüz? Buna rağmen, uygun olan yerlerde kesme noktalarını kullanarak cevabı bulmak için hata ayıklama yaparken, bu çöküşün meydana gelmediğini öğrendim. Bu gerçekten de çöküşün bazı eşzamanlılıklardan kaynaklandığını söyler. Yine de, bu sorunu iOS 3.0'da nasıl düzelttiniz? –

cevap

0

deneyin xcode profilinden Zombiler enstrüman kullanmayı. Bu, EXC_BAD_ACCESS'e neden olan hangi nesne belleğini bulmanıza yardımcı olacaktır.

+0

Son sonucun ne olduğunu hatırlamıyorum (bu 2 yıl önceydi) ama Zombies'i açmak sorunu çözmeye yardımcı oldu. Bunu doğru olarak işaretlemek. –

İlgili konular