iOS:dispatch_get_global_queue QOS_CLASS_BACKGROUND 在 7.1.2 上崩溃
iOS: dispatch_get_global_queue QOS_CLASS_BACKGROUND crashes on 7.1.2
我有以下使用块获取联系人的代码片段:
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_get_main_queue
更改为 dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)
时,它在 8.1.3
上有效,但 在 7.1.2
[= 上崩溃 21=]
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
//...
}
});
});
QOS_CLASS_
标识符是在iOS8中引入的。如果要支持iOS7.
,则需要使用DISPATCH_QUEUE_PRIORITY_
标识符
我有以下使用块获取联系人的代码片段:
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_get_main_queue
更改为 dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)
时,它在 8.1.3
上有效,但 在 7.1.2
[= 上崩溃 21=]
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
//...
}
});
});
QOS_CLASS_
标识符是在iOS8中引入的。如果要支持iOS7.
DISPATCH_QUEUE_PRIORITY_
标识符