Я уже некоторое время использую API AddressBook на iPhone. Но, проведя некоторый рефакторинг для повышения производительности приложения, я решил «повторно использовать» ABAddressBookRef, возвращаемый AddressBookCreate, потому что я заметил, что это значительно улучшает производительность. Однако теперь я случайным образом получаю ошибки EXEC_BAD_ACCESS, и я думаю, что причина кроется в этой «оговорке» в эталонной реализации iPhone: http://developer.apple.com/iphone/library/documentation/ContactData/Концептуальный/AddressBookProgrammingGuideforiPhone/300-BasicObjects/BasicObjects.html#//apple_ref/doc/uid/TP40007744-CH3-SW1
Важно: экземпляры ABAddressBookRef не могут использоваться несколькими потоками. Каждый поток должен создать свой собственный экземпляр, вызвав ABAddressBookCreate.
Теперь я подумал, что это просто означает, что он не является потокобезопасным, поэтому мне пришлось синхронизировать доступ к API, но, может быть, я ошибаюсь, и есть некоторые другие причины, по которым несколько потоков испортили структуру данных?
Может ли кто-нибудь подтвердить, действительно ли это проблема с потокобезопасностью (поэтому @synchronize должна работать) или какая-то другая проблема?
Ваше здоровье