私ABAddressBook
は自分のアプリでを使用しています。
ABへのアクセスは、UIを解放するために別のスレッドから行われます。
ABインスタンスへのアクセスは常に同じスレッドからでなければならないという事実を認識しており、この理由でラッパーを作成しました。
ラッパーはシングルトンであり、独自のバックグラウンドスレッドを維持します。
ラッパーに届くすべてのメッセージは自動的にバックグラウンドスレッドにリダイレクトされますが、呼び出し元のスレッドは実装が終了するまで待機し、最後に関連データ(連絡先リスト、特定の連絡先など)を引数に入力します。
それでも、デバイスのアドレス帳が空になる(消去される)ことがあります。
アプリの10〜20回目の使用ごと。
だから、私はいくつかの質問があります:
- 専用スレッドのABからABRecordRefを取得した後、同じスレッドのABRecordRefからデータを取得する必要がありますか、それとも別のスレッドである可能性がありますか?ABRecordRefのラッパーもあるので、ABから連絡先を取得するときは、personラッパーオブジェクトに入力し、その後、元のスレッドからそれを使用します(ABRecordRefから読み取ります)。
- AB UI API(パーソンピッカーナビゲーションコントローラー、新しいパーソンビューコントローラーなど)を使用してそれらにABAddressBookのインスタンスを渡す場合、APIが同じスレッドからのこのABインスタンスを使用しないという事実を心配する必要があります。それを作成しましたか?ABインスタンスの代わりにNULLを渡すことができ、APIが独自のABを使用することを確認しましたが、連絡先を変更する場合はどうすればよいですか?この場合、ABRecordRefインスタンスを渡す必要があります...
- 私が考えていなかった他の何かがありますか?
前もって感謝します。
-
マイケル