2011-11-30 66 views
0

我按照這個說明在我的項目中添加電子名片數據到地址簿。 iOS版5. Adding vCard data directly to the system Address BookEXC_BAD_ACCESS當添加電子名片數據到地址簿

代碼運行正常,並添加虛擬卡數據到我的iPad2和iPhone4S的adressbook,但是,Xcode中顯示此錯誤:

thread 1 program received signal: "exc_bad_acess"

爲什麼會出現這個錯誤?

編輯:代碼添加。

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事物,而是一個內存泄漏事情。你過度發佈操作系統想要釋放的數據。 Here's an explanation.

此外,請將問題標記爲已回答,以便您可以幫助其他人找到解決方案。謝謝!

相關問題