2012-04-26 51 views
0

我的應用程序用戶的一個子集正在報告崩潰。當我用其中一個崩潰日誌的符號表示時,我發現有問題的代碼是讀取的標籤。地址簿崩潰並不合邏輯

下面是從崩潰日誌輸出:

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000 
Crashed Thread: 0 
Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 CoreFoundation     0x33e5004e 0x33e4d000 + 12366 
1 CoreFoundation     0x33e58cfc 0x33e4d000 + 48380 
2 Mail my meeting     0x00002a9c -[Mail_my_meetingAppDelegate initPeople] Mail_my_meetingAppDelegate.m:136) 
3 Mail my meeting     0x0000287a -[Mail_my_meetingAppDelegate application:didFinishLaunchingWithOptions:] (Mail_my_meetingAppDelegate.m:74) 

這裏是代碼,用線136是最後一行:

NSString* finalName=[NSString stringWithFormat:@"%@%@%@",firstName,middleName,lastName]; 
NSString *phoneNumber = nil; 
ABMultiValueRef phoneNumbers1 = ABRecordCopyValue(person,kABPersonPhoneProperty); 
if (ABMultiValueGetCount(phoneNumbers1) > 0) { 
    CFIndex j; 
    for (j=0; j < ABMultiValueGetCount(phoneNumbers1); j++) { 
     CFStringRef label = ABMultiValueCopyLabelAtIndex(phoneNumbers1, j); 

我無法理解這最後行可能會導致崩潰,因爲我驗證它小於計數,並從零開始。

這是推動我有點瘋狂,所以在所有的任何想法,歡迎!

+0

您是否已經發布了地址簿參考?如果是的話,看看http://stackoverflow.com/questions/8630738/cannot-read-kabpersonphoneproperty,我以前有一個類似的問題。 – Saphrosit 2012-04-26 11:47:52

回答

0

我有類似的問題。

誰在調用崩潰方法?

檢查是誰打來的方法和崩潰是在同一個線程/隊列中運行的方法。或者至少你所有的AB相關方法都運行在同一個隊列/線程中。

如果是檢查,當你創建你的一切又都在同一線程或隊列創建的AB變量的第一個實例。

基本上你需要始終可以訪問AB功能,在同一個隊列或線程!

0

這可能是一個損壞的通訊簿,我已經看到了,有時。

,但在大多數情況下,它是由於不同的隊列或線程訪問AB數據庫。