iPhone: адресная книга иногда стирается

Я использую ABAddressBook в своем приложении.
Доступ к AB осуществляется из отдельного потока, чтобы освободить UI.
Я знаю, что доступ к экземпляру AB должен быть всегда из одного и того же потока, и по этой причине я создал оболочку.
Оболочка является одноэлементной и поддерживает свой собственный фоновый поток.
Все сообщения, поступающие в оболочку, автоматически перенаправляются в фоновый поток, в то время как вызывающий поток ждет до конца реализации и в конце заполняет аргумент out соответствующими данными (список контактов, конкретный контакт и т. Д.).

Хотя адресная книга на устройстве иногда становится пустой (стирается).
После каждого 10-20-го использования приложения.

Итак, у меня есть несколько вопросов:

  • После того, как я получу ABRecordRef от AB в выделенном потоке, должен ли я получать данные из ABRecordRef также в том же нить или может быть другая нить? У меня также есть оболочка для ABRecordRef, поэтому, когда я получаю контакт из AB, я заполняю объект-оболочку person, а после этого использую его (читается из ABRecordRef) из исходного потока.
  • Когда я использую API-интерфейсы AB UI (person контроллер навигации выбора, контроллер представления нового человека и т. д.) и передать им мой экземпляр ABAddressBook, должен ли я беспокоиться о том, что API не будет использовать этот экземпляр AB из того же потока, который его создал? Я видел, что могу передать NULL вместо экземпляра AB, и тогда API будет использовать свой собственный AB, но что я могу сделать, если хочу изменить контакт? В этом случае я должен передать ему экземпляр ABRecordRef ...
  • Есть еще что-то, о чем я не подумал?

Заранее благодарю.

-
Майкл

6
задан Michael Kessler 18 January 2011 в 09:05
поделиться