1

ABAddressBook API를 사용하여 사용자의 주소록에있는 연락처를 나열하는 앱을 개발 중입니다. 사용자가 앱을 많이 사용하면 (보기 컨트롤러로 들어가거나 보이지 않는 경우) ABAddressBook API가 갑자기 응답을 중지하고 오류 메시지가 표시됩니다.앱을 광범위하게 사용하면 ABAddressBook API가 작동을 멈 춥니 다.

AB : SELECT ROWID, 이름, ExternalIdentifier, 유형, ConstraintsPath, ExternalModificationTag, ExternalSyncTag, 계정 ID, 사용, SyncData, MeIdentifier, ABStore FROM 기능 활성화 = 쿼리 (ABCCopyArrayOfAllInstancesOfClassInSourceMatchingProperties을) 문을 컴파일 할 수 없습니다? ;

또한,이 오류가 발생하고 사용자는 펜촉 전원의 ViewController로 이동하려고 한 후, 다음과 같은 오류 메시지와 함께 응용 프로그램 충돌 : 인한 캐치되지 않는 응용 프로그램 종료

* 예외 'NSInternalInconsistencyException', 이유는 '번들에 NIB를로드 할 수 없습니다 :'NSBundle (로드) '이름'동기화 ''

이 두 오류 만 믿고 날 리드 광범위한 사용 후 발생 그것은 일종의 기억 문제입니다. 나는 메모리 - 디버그 기능을 통해 표준을 벗어난 것으로 보이는 응용 프로그램을 사용하는 동안 메모리가 누적되었다는 것을 알았지 만, 응용 프로그램은 ARC를 사용하여 메모리 관리 방식으로 변경 될 수있는 많은 요소가 없다는 것을 의미합니다. 나는이 문제의 뿌리가 될 수있는 것과 해결 방법에 대한 더 깊은 통찰력에 크게 감사 할 것입니다.

+0

Google 검색에서 iOS 9의 새로운 CNContactStore 프레임 워크를 사용하는 경우 여기에서 내 대답을 참조하십시오. http://stackoverflow.com/a/36506216/52680 –

답변

1

주소록 API를 사용하는 세 가지 응용 프로그램에서 여러 번이 문제가 발생했습니다. 일반적으로 ABAddressBookRef를 만들 때마다 오류가 발생했는지 확인하는 것이 었습니다. 이 문제는 Google에서도 마찬가지입니다.

이 문제를 해결하려면 주소록에 대한 권한이 필요합니다. 이미 완료했거나 아무 것도 작동하지 않는 것 같지만 코드를 확인하려면 Programmatically Request Access to Contacts을 확인하십시오.

두 번째 오류는 첫 번째 오류와 관련이 있습니다. 즉, 첫 번째 오류를 제거 할 수 있다면 두 번째 오류가 사라집니다. 가장 좋은 해결책은 가능한 한 주소록을 거의 호출하지 않는 것입니다. 앱이로드 될 때마다 한 번만 호출하면됩니까? 그렇지 않으면이 오류가 계속 발생합니다. ABAddressBookCreateWithOptions에 전화 할수록 오류가 더 많이 표시됩니다.

이 오류가 발생하지 않도록하는 것으로 충분합니다.