Во время первой установки приложения выполнение iOS с помощью кода AddressBook в iOS прекращается
Я хочу получить контакты из адресной книги в свое приложение. Код имеет проблемы с первой установкой, в следующий раз он работает нормально. При первой установке приложения, если выполняется код AddressBook, приложение зависает. После выполнения строки dispatch_semaphore_wait приложение зависает. Я перезапустил устройство, на этот раз приложение работает нормально. Это происходит, если его сначала установить на новое устройство. Как я могу это исправить?
CFErrorRef * error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
__block BOOL isaccess = NO;
if(ABAddressBookRequestAccessWithCompletion != NULL) {
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
//ask to grand or deny access
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
isaccess = granted;
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
}