Во время первой установки приложения выполнение 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);
    }

0 ответов

Другие вопросы по тегам