2012-08-30 9 views
1

내 응용 프로그램에 이상한 충돌이 발생했습니다. 우선, 응용 프로그램에 대한 정보를 얻을 수있을 것입니다. 많은 주석이 포함 된지도가 있으며이 설명 선을 사용자 정의했습니다. 주석 버튼 및 많은 정보가 포함 된보기로,이 응용 프로그램에서 다른 탭으로 이동하는 작업이 버튼을 포함, I가 중단 점 예외를 추가 DisclosureButton Where updating the mapmkmapview 변경 (주석 제거)

the action of the DisclosureButton

라고 프로젝트에서 앱이 추락 한 곳을 찾았으므로 위의 173 줄에서 볼 수 있습니다. 위 콘솔에서 볼 수 있듯이 view.annotation은 null이므로 일부 지점에서 주석이 제거되었습니다. 스레드 1 (메인 스레드에서 수행 한 동작을 확인한 후, 아래에서 볼 수 있습니다.)지도에서 주석을 제거하는 동안 공개 버튼 동작이 수행되는 것을 볼 수 있습니다. 메인 스레드가 updateMap 메소드를 수행하고 공개 버튼에 대한 작업을 시작하는 이유는 무엇입니까? 콘솔에 먼저 "주석을 제거하기 전에"다음에 "주석을 만들기 전"을 기록하지 않고 disclosureButton의 작업 내에서 로그를 표시합니다.이 항목은 매우 이상합니다.이 시점에서 무슨 일이 일어나고 있는지 확실하지 않습니다. ??? 내가 무슨 일이 일어나고 있는지 확실하지 않다 stackTrace of mainThread

이 어떤 제안/의견/지원을 사전에

감사합니다,

+0

iOS 6이 있지만 iOS 5는 아닙니다. 주석이 map.annotations에 추가되었으며 액세스하기 전에 null이되었습니다. –

+0

iOS 5에서 위의 코드가 실행 중입니다. 주 스레드에서 실행되는 위 코드는 기본 스레드가 "removeAnnotation"메서드를 실행하고있는 동안 공개 버튼을 누를 때 주 스레드가 중지됩니다. removeAnnotation 메서드와 단추의 동작을 실행하려면이 문제가 여기에 있습니다 !!! – Maystro

답변

0

을 감상 할 수있다 나는이 같은 문제를 가지고 생각합니다. 내 배경 스레드가 주석을 추가/제거했지만 주석의 단추가 주 스레드에 추가됩니다. 이것은 또한 주 스레드가 (어떤 이유로) 주석에 대한 열거를 수행함을 의미합니다. 주 스레드에서 추가 작업을 수행하여 문제를 해결했습니다. < __NSArrayM

* 컬렉션 : 0x136d57c0>가 열거되는 동안 변이 된

문제는 내가 당신의 예외가 무엇인지 모르겠지만 내이었다 iOS 만 6

에 존재합니다.

0 CoreFoundation      0x0330e02e __exceptionPreprocess + 206 
1 libobjc.A.dylib      0x02735e7e objc_exception_throw + 44 
2 CoreFoundation      0x03396cc5 __NSFastEnumerationMutationHandler + 165 
3 MapKit        0x0231748c -[MKAnnotationContainerView _updateAnnotationViewPerspective] + 399 
4 MapKit        0x02305520 -[MKMapView _updateScrollContainerView:] + 2478 
5 MapKit        0x02303e10 -[MKMapView _didChangeRegionMidstream:] + 97 
6 MapKit        0x02305d66 -[MKMapView _goToMapRegion:duration:animationType:] + 828 
7 MapKit        0x023061bd -[MKMapView _setZoomScale:centerMapPoint:duration:animationType:] + 711 
8 MapKit        0x02305a24 -[MKMapView _setZoomScale:centerCoordinate:duration:animationType:] + 121 
9 MapKit        0x02307f8f -[MKMapView _goToCenterCoordinate:zoomLevel:animationType:cancelDefaultLocationTimer:] + 950 
10 MapKit        0x023075fb -[MKMapView goToCenterCoordinate:zoomLevel:animationType:] + 81 
11 MapKit        0x023076c9 -[MKMapView goToCenterCoordinate:longLatSpan:animationType:] + 178 
12 MapKit        0x0230992a -[MKMapView goToDefaultLocation] + 415 
13 Foundation       0x009a0b90 __NSFireTimer + 97 
14 CoreFoundation      0x032cd376 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22 
15 CoreFoundation      0x032cce06 __CFRunLoopDoTimer + 534 
16 CoreFoundation      0x032b4a82 __CFRunLoopRun + 1810 
17 CoreFoundation      0x032b3f44 CFRunLoopRunSpecific + 276 
18 CoreFoundation      0x032b3e1b CFRunLoopRunInMode + 123 
19 GraphicsServices     0x03c557e3 GSEventRunModal + 88 
20 GraphicsServices     0x03c55668 GSEventRun + 104 
21 UIKit        0x00d3465c UIApplicationMain + 1211 
22 myApp        0x00002c93 myApp + 7315 
23 myApp        0x00002bd5 myApp + 7125 
1

아이폰 OS 6은지도에 주석을 폭발 좋아,에 대한 누가 이유를 알고있다. 내 솔루션은 소유 클래스에있는 주석을 유지하고 메모리를 처리하는 것입니다. 그것은 현재 작동하지만 네이티브 mapKit이 처리하지 못하게합니다 ... 새로운 WWDC 비디오가 있는지 또는 MKMap 프로그래밍 문서에 추가 된 페이지가 있는지 확실하지 않지만 지금은 작동합니다.

+0

나는 같은 접근법을 사용하고있다. iOS 6 apdate 이후, 내지도 기반 앱이 엉망이되었습니다. – Trein

관련 문제