0
  ABMultiValueRef phoneNumbers = ABRecordCopyValue((__bridge  ABRecordRef)([arrTemp1 objectAtIndex:i]),
                                                                 kABPersonPhoneProperty);
                if (ABMultiValueGetCount(phoneNumbers) > 0) {
                    phone = (__bridge_transfer NSString*)
                    ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
                } else
                {
                    phone = @"[None]";
                }

このコード行の後、「オブジェクトがリークしました: 'phoneNumber' に割り当てられて保存されたオブジェクトは、この実行パスで後で参照されず、保持カウントが +1 になっています」というメッセージが表示されます。同様の投稿をいくつか見ましたが、質問に対する正確な解決策が得られませんでした。このリークにより、アプリがクラッシュします。だから、これを知っている人は私を助けてください

4

2 に答える 2

1

このコードを試してください。

ABMultiValueRef phoneNumbers = ABRecordCopyValue((__bridge  ABRecordRef)([arrTemp1 objectAtIndex:i]),kABPersonPhoneProperty);

if (ABMultiValueGetCount(phoneNumbers) > 0) {
      phone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
} else {
      phone = @"[None]";
}

CFRelease(phoneNumbers);
于 2013-11-11T07:10:27.507 に答える
0

これらのオブジェクトは CoreFoundation オブジェクトであるため、CFRelease を使用して占有されているメモリを解放する必要があります。CFRelease(phoneNumbers); .次のリンクをチェックアウトして、ABMultiValueRef オブジェクトによって占有されているメモリを解放する必要があります。

于 2013-11-11T07:54:41.623 に答える