我有一个使用通讯簿的应用程序。 当在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();
}
这完美的作品:我能够读取联系人信息,并在用户拒绝访问,应用程序相应地做出反应。
但是,如果用户:
- 允许联系人在应用程序访问,
- 退出应用程序,
- 进入设置 - >与隐私>联系人和禁用应用程序访问联系人,
- 运行该应用程序,
- 当应用程序运行在后台去设置并启用了应用程序联系访问,
该应用立即崩溃内部main()
没有异常信息或有意义的堆栈跟踪。 我试着打开了“所有异常”和[NSException raise]
断点,但是这并没有给我任何信息。
崩溃可以重现,即使期间推出的应用程序并不运行上面的代码。
这里发生了什么事? 有没有我应该订阅回调?