我在以下代码中遇到崩溃,其中从CFErrorRef转换为NSError的桥是。
由于信号退出服务:分段错误:11
CFErrorRef cfError = NULL;
ABMultiValueAddValueAndLabel(phoneNumbers, (__bridge CFStringRef) spam.number, (__bridge CFStringRef) label, &cfError);
if (cfError != nil)
{
NSError *error = [[NSError alloc] initWithDomain:@"PlaceholderErrorDomain" code:-99999 userInfo: nil];
error = (__bridge NSError *)cfError;
NSLog(@"Error adding phone number to contact. %d %@", error.code, [error.userInfo description]);
}
在ABMultiValueAddValueAndLabel()执行后,cfError的值为0x1。这应该是一个分配的CFErrorRef对象的有效地址吗?
有关原因/解决方法的任何建议吗?
答案 0 :(得分:0)
您的主要问题是ABMultiValueAddValueAndLabel
的第4个参数不是错误。它是用于获取标识符的。
要查看值是否已添加,请查看ABMultiValueAddValueAndLabel
是返回true还是false。但是,如果它失败,你将无法获得有关它失败的原因的任何信息。
ABMultiValueIdentifier identifier;
if (!ABMultiValueAddValueAndLabel(phoneNumbers, (__bridge CFStringRef) spam.number, (__bridge CFStringRef) label, &identifier) {
// Unable to add value and label but there is no error to tell you why
}