iOS:7.1.2上的调度\获取\全局\队列QOS \类\后台崩溃
我有以下几段代码,它们使用block获取联系人:iOS:7.1.2上的调度\获取\全局\队列QOS \类\后台崩溃,ios,objective-c,contacts,Ios,Objective C,Contacts,我有以下几段代码,它们使用block获取联系人: if (&ABAddressBookCreateWithOptions != NULL) { CFErrorRef error = nil; addressBook = ABAddressBookCreateWithOptions(NULL, &error); ABAddressBookRequestAccessWithCompletion(address
if (&ABAddressBookCreateWithOptions != NULL) {
CFErrorRef error = nil;
addressBook = ABAddressBookCreateWithOptions(NULL, &error);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
dispatch_sync(dispatch_get_main_queue(), ^{
if (error) {
//...
} else if (!granted) {
//...
} else {
// access granted
//...
}
});
});
它在7.1.2
和8.1.3
版本上都可以正常工作
但是,当我尝试将dispatch\u get\u main\u queue
更改为dispatch\u get\u global\u queue(QOS\u CLASS\u BACKGROUND,0)
时,它在8.1.3
上工作,但在7.1.2
上崩溃
if (&ABAddressBookCreateWithOptions != NULL) {
CFErrorRef error = nil;
addressBook = ABAddressBookCreateWithOptions(NULL, &error);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
dispatch_sync(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0), ^{ // BAD ACCESS
if (error) {
//...
} else if (!granted) {
//...
} else {
// access granted
//...
}
});
});
iOS 8引入了
QOS\u类
标识符。如果要支持iOS 7,您需要使用DISPATCH\u QUEUE\u PRIORITY\u
标识符。那么我可以写什么来代替DISPATCH\u sync(DISPATCH\u get\u global\u QUEUE(QOS\u CLASS\u BACKGROUND,0),
?什么是QOS\u CLASS\u BACKGROUND
?调度队列\u PRIORITY\u BACKGROUND
的模拟值?将是等效值。我们应该注意的任何差异?