2011-11-30 2 views
0

이 지침에 따라 프로젝트의 주소록에 vcard 데이터를 추가합니다. 이 오류가 나타납니다 왜주소록에 vCard 데이터를 추가 할 때 EXC_BAD_ACCESS

thread 1 program received signal: "exc_bad_acess"

: 코드 실행 확인 아이폰 OS (5) Adding vCard data directly to the system Address Book

및 추가 vCard 데이터는 엑스 코드 쇼를하지만, 내 아이 패드 2와 아이폰 4S에이 오류를 adressbook하는?

EDIT : 코드 추가.

NSString *vCardString = 
@"BEGIN:VCARD\n" 
@"N:Paulo;Joao\n" 
@"TEL:+44 (0)9999 8888\n" 
@"ADR;HOME:;;Flat 2, 43 Howitt Road, Belsize Park;London;;NW34LU;UK\n" 
@"ORG:NetTek Ltd;\n" 
@"TITLE:Consultant\n" 
@"EMAIL:[email protected]\n" 
@"URL:www.none.com\n" 
@"BDAY:19001010\n" 
@"END:VCARD"; 
CFDataRef vCardData = (__bridge CFDataRef)[vCardString dataUsingEncoding:NSUTF8StringEncoding]; 
ABAddressBookRef book = ABAddressBookCreate(); 
ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(book); 
CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData); 
for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) 
{ 
    ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index); 
    ABAddressBookAddRecord(book, person, NULL); 
    CFRelease(person); 
} 
CFRelease(vCardPeople);  
CFRelease(defaultSource); 
ABAddressBookSave(book, NULL); 
CFRelease(book); 
+0

이 오류는 이미 출시 된 메모리에 액세스하려고 할 때 나타납니다. 자세한 내용은 일부 코드를 인쇄하십시오. – beryllium

+0

코드를 사용하면이 코드없이 링크의 동일합니다, 내 프로젝트를 확인을 실행합니다. – Dyego

답변

0

이 문제점을 발견했습니다.

문제는 마지막 줄에있는 것입니다. 아마도 ARC 때문일 수 있습니다.

CFRelease (book);

줄에 주석을 달고 프로그램이 정상적으로 실행됩니다.

0

문제를 찾을 수있어서 기쁩니다.하지만 ARC가 아니라 메모리 누수가 있음을 알려드립니다. OS가 공개하려고하는 데이터를 과도하게 공개하고 있습니다. Here's an explanation.

또한 다른 사람들이 솔루션을 찾을 수 있도록 질문에 답변으로 표시해주십시오. 고맙습니다!

관련 문제