2012-08-06 2 views
2

응용 프로그램의 시작 부분에 모든 내용을 미리보기 위해 모든 UIDocument를로드하려고합니다. 이것은 대부분의 경우 잘 작동하지만 때로는 UIDocument를로드 한 직후 충돌이 발생합니다. 내 문제는 내가 충돌을 해석하는 방법을 모른다. UIDocument (스레드 6 및 7은 UIDoc와 관련이 있지만 스레드 8은 충돌을 일으킨 것 같다)의 처리와 관련이 있는지 확실히 알지 못합니다.UIDocument related EXC_BAD_ACCESS

enter image description here

내가 모든 예외에에 중단 점을 가지고 있지만, 디버거는 코드의 특정 라인에서 멈추지 않을 것입니다 : 누군가가이 해석하는 데 도움 수 있다면

, 나는 매우 감사하게 될 거라고 .

+0

콘솔의 오류는 무엇이며 'UIDocument'가 성공적으로 열렸는 지 확인할 수 있습니까? (많은 작업이 비동기입니다.) – aforaudrey

+1

@iBlue 콘솔에 출력이 전혀 없습니다. UIDoc이 성공적으로 열리지 않았습니다. 즉, openWithCompletionHandler의 성공 블록에서 지금껏 얻은 것 :^(BOOL 성공)이 실행되지 않습니다. 전에 충돌합니다. 그래서 내가 제공 한 크래시 스크린 샷은 오류 소스에 대해별로 말하지 않는 것 같습니까? –

+1

@ n.evermind, 저도 비슷한 문제가 있습니다 ... 어떻게 수정했는지 보여줄 수 있습니까? 그것은 나를 위해 매우 도움이 될 것입니다. – Ananth

답변

0

나는 동일한 문제가있었습니다. iCloud 문서를 읽으면 테스트 장치 중 하나에서만 재생산하기가 쉽습니다. 앱을 재설치해도 버그에 영향을 미치지 않습니다.

파일 URL을 가져 오기 위해 NSMetadataQuery를 사용하고있었습니다. NSMetadataQueryDidFinishGatheringNotification에 대한 나의 수신기는 다음과 같이 보았다 :

- (void)queryDidFinishGathering:(NSNotification *)notification 
{ 
    NSMetadataQuery *query = [notification object]; 
    [query disableUpdates]; 
    [query stopQuery]; // <--- This was the problem 

    NSMetadataItem *item = [query resultAtIndex:0]; 
    NSURL *url = [item valueForAttribute:NSMetadataItemURLKey]; 
    UIDocument *doc = [[CustomDocument alloc] initWithFileURL:url]; 
    [doc openWithCompletionHandler:^(BOOL success) { 
     // EXC_BAD_ACCESS before completion block is called :'(
    }]; 

    [query enableUpdates]; 
} 

stopQuery 전화 고정 모든 것을 제거!