2014-08-28 4 views
0

여러 스레드에서 다중 컨텍스트가있는 iOS 앱으로 작업 해 왔습니다. 응용 프로그램은 우리의 NSError 구조체를 채우고, 그래서 언젠가 데이터를 저장하는 동안 응용 프로그램은 내가 앱이 충돌 로그를 생성하는 abort()를 호출 기본적으로managedObjectContext를 저장하는 중 처리 오류가 발생했습니다.

[managedObjectContext save:&error]

로 통과하는 때때로 어떤 객체에 대한 허상 포인터 참조를 일부 데이터 불일치 오류 등을 발생 그리고 물건. 내 질문은 abort()을 호출하는 앱을 호출하지 않고이 상황을 처리하는 적절한 방법이 무엇일까요? 예를 들어 사용자에게 몇 가지 오류 등이 있음을 알릴 수있는 방법이 있습니까? managedObjectContext은 자기 등을 롤백합니다.

+0

당신은 이것에 대해 물어 보십니까? if (! [managedObjectContext save : & error]) { NSLog (@ "저장할 수 없습니다! % @ % @", 오류, [error localizedDescription]); } ' –

+0

아니요. 이것은 크래시 정보 만 기록합니다. 나는 이미 그것을 가지고있다. 하지만 일단 응용 프로그램을 중단하지 않고이 예외가 발생하면 응용 프로그램을 얻을 것을 부탁입니다. – Umair

답변

1

가장 좋은 방법은 오류에 대한 보고서를 생성하고 경고보기 (또는 유사)를 통해 사용자에게 잘못된 점을 알리는 것입니다. 간단한 내용은 NSManagedObjectContext save error입니다.

다른 스레드로 실행하고 UI 물건을 표시해야하는 경우 먼저 주 스레드를 잡으십시오.

하지만 지금 내 질문. 어떤 유형의 오류가 발생합니까? 이것은 정상적인 행동입니까? 컨텍스트를 저장하여 발생하는 오류는 프로덕션 환경에 나타나서는 안되며, 적어도 분석해야합니다.

+0

네, 답을 이해하고 있습니다. 몇 가지 드문 멀티 스레딩 문제로 인해 오류가 발생하고 일부 포인터가 매달려 있습니다. 내가 로그를 찾았지만 런타임 중에 분석하면 어떻게 abort()를 호출하지 않고도이 오류를 빠져 나올 수 있습니다. – Umair

+0

@Umair는 제가 제공 한 링크를 따릅니다. 중단을 호출하지 않으면 아무 일도 일어나지 않고 실행이 계속됩니다. –

+0

@Umair 가능한 경우 스레드와 컨텍스트를 함께 관리하는 데 사용하는 아키텍처에 대한 대답을 확장하십시오. –

관련 문제