0

AddressBook からアプリに連絡先を取得したいと考えています。コードは最初のインストールで問題がありますが、次回以降は正常に動作しています。アプリの最初のインストールで、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);
    }
4

0 に答える 0