相关疑难解决方法(0)

当用户更改联系人访问权限时,应用程序在iOS 6中崩溃

我有一个使用地址簿的应用程序.在iOS 6中运行时,当用户执行需要通讯簿访问的操作时,它会运行此代码.

if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined)
{
    ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);

    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error)
    {
        if (granted)
        {
            showContactChooser();
        }
    });

    CFRelease(addressBookRef);
}
else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized)
{
    showContactChooser();
}
else
{
    showAccessDeniedAlert();
}
Run Code Online (Sandbox Code Playgroud)

这非常有效:我能够阅读联系人信息,当用户拒绝访问时,应用程序会做出相应的反应.

但是,如果用户:

  1. 允许在应用中访问联系人,
  2. 退出应用,
  3. 转到设置 - >隐私 - >联系人并禁用应用程序的联系人访问权限,
  4. 运行应用程序,
  5. 当应用程序在后台运行时进入设置并启用应用程序的联系人访问权限,

应用程序立即崩溃main(),没有异常信息或有意义的堆栈跟踪.我尝试打开"所有异常"和[NSException raise]断点,但这并没有给我任何更多信息.

即使应用程序在启动期间未运行上述代码,也可以重现崩溃.

这里发生了什么事?我应该订阅回调吗?

cocoa-touch abaddressbook ios ios6

46
推荐指数
1
解决办法
1万
查看次数

标签 统计

abaddressbook ×1

cocoa-touch ×1

ios ×1

ios6 ×1