Ios 收藏<__NSCFString:>;在被枚举时发生了变异
出于某种原因,我收到了一个崩溃(如下所述)说“收集在被枚举时发生了变异”,但仅在实际设备上。它在Xcode测试设备上工作。我不完全确定这意味着什么,那么如何处理这个lldb崩溃呢Ios 收藏<__NSCFString:>;在被枚举时发生了变异,ios,contacts,addressbook,mutated,Ios,Contacts,Addressbook,Mutated,出于某种原因,我收到了一个崩溃(如下所述)说“收集在被枚举时发生了变异”,但仅在实际设备上。它在Xcode测试设备上工作。我不完全确定这意味着什么,那么如何处理这个lldb崩溃呢 ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil); ABRecordRef pet = ABPersonCreate(); ABRecordSetValue(pet, kABPerson
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
ABRecordRef pet = ABPersonCreate();
ABRecordSetValue(pet, kABPersonFirstNameProperty, (__bridge CFStringRef)petFirstName, nil);
ABRecordSetValue(pet, kABPersonLastNameProperty, (__bridge CFStringRef)petLastName, nil);
ABMutableMultiValueRef phoneNumbers = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(phoneNumbers, (__bridge CFStringRef)petPhoneNumber, kABPersonPhoneMainLabel, NULL);
ABRecordSetValue(pet, kABPersonPhoneProperty, phoneNumbers, nil);
ABAddressBookAddRecord(addressBookRef, pet, nil);
NSArray *allContacts = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBookRef);
for (id record in allContacts){
ABRecordRef thisContact = (__bridge ABRecordRef)record; //*******The line below is where the crash is occurring*********
if (CFStringCompare(ABRecordCopyCompositeName(thisContact),
ABRecordCopyCompositeName(pet), 0) == kCFCompareEqualTo){
//The contact already exists!
//detects if duplicate
return;
}
}
您正在应用程序的其他某个点更改集合。据苹果公司称 “在枚举可变集合时删除、替换或添加到可变集合的元素是不安全的”
请检查以下内容:
这是确切的代码还是您试图删除dupe或类似的代码?您确定
allContacts
是NSArray吗?消息表明它是一个NSString。不幸的是,这正是我的Xcode项目中的代码。嗯……所以我没有分配所有联系人之类的东西?它只在实际设备上失败。它在测试设备上工作。我将把这一点补充到问题中。