2012-04-26 13 views
0

私のアプリユーザーのサブセットがクラッシュを報告しています。私がクラッシュログの1つを象徴するとき、私は違反しているコードが読み込まれたラベルであることを発見しました。ここでアドレス帳のクラッシュが論理的でない

はクラッシュログから出力された:

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

答えて

0

同様の問題がありました。

誰がクラッシュメソッドを呼び出していますか?

呼び出し元のメソッドとクラッシュするメソッドが同じスレッド/キューで実行されているかどうかを確認します。または少なくともAB関連のすべてのメソッドが同じキュー/スレッドで実行されます。

「はい」の場合、同じスレッドまたはキューに作成されたすべてのAB変数の最初のインスタンスを作成するときにチェックします。

基本的には、AB関数に常に同じキューまたはスレッドでアクセスする必要があります。

0

これは破損したアドレス帳である可能性がありますが、私はそれを時々見ました。

しかし、ほとんどの場合、異なるキューまたはスレッドでABデータベースにアクセスしているためです。

関連する問題