0

シミュレーターとデバイスで次のゾンビの問題が発生します。

  • [型クラスではありません]: 割り当て解除されたインスタンス 0x5bf9450 にメッセージが送信されました

この問題を発生させるコードは、これ以上単純ではありません。

+ (void) testAllocateAndDeallocteAddressBook
{
  ABAddressBookRef addressBookRef = ABAddressBookCreate();

  NSAssert(addressBookRef != NULL, @"ABAddressBookCreate() returned NULL");

  CFRelease(addressBookRef);

  return;
}

私が理解していないのは、この CFRelease() がこのエラーを引き起こす理由です。この URL について私が読んだすべての Apple ドキュメントは、参照を解放するために CFRelease() を呼び出す必要があることを示しています。

4

1 に答える 1

0

おそらくこれがここでの問題です。これはリンゴのページでの議論からです。

返されたアドレス帳に加えられた変更は、ABAddressBookSaveでアドレス帳を保存した後にのみアドレス帳データベースに反映されます。

iOS 6.0以降では、発信者がアドレスブックデータベースにアクセスできない場合:

iOS 6.0以降に対してリンクされているアプリの場合、この関数はNULLを返します。 以前のバージョンのiOSに対してリンクされたアプリの場合、この関数は空の読み取り専用データベースを返します。

于 2012-10-23T05:19:43.017 に答える