0

I follow this instruction to add vcard data to addressbook, in my project. iOS 5. Adding vCard data directly to the system Address Book

The code run ok, and add vcard data to adressbook in my ipad2 and iphone4s, however, xcode show this error:

thread 1 program received signal: "exc_bad_acess"

Why this error appears?

EDIT: code add.

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:none@none.com\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);
4

2 回答 2

0

我很高兴您能够找到问题所在,但是,我只是想让您知道这不是 ARC 问题,而是内存泄漏问题。您过度发布了操作系统想要自行发布的数据。这是一个解释。

此外,请将问题标记为已回答,以便您可以帮助其他人找到解决方案。谢谢!

于 2012-05-02T18:28:37.157 回答
0

我发现了问题。

问题出在最后一行,可能是因为 ARC。

CFRelease(书);

我注释了这一行,程序运行正常。

于 2011-12-01T11:52:27.050 回答