1
我有一個代碼行,並且我在下面提到的一致性行爲崩潰。在CFRelease期間exc_bad_exception
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
for (...) {
ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);
...
CFRelease(persn)
}
CFRelease(source);
CFRelease(allPeople);
CFRelease(addressBook);
我一直得到最後一行CFRelease(addressBook);
錯誤。然而,
如果我刪除線CFRelease(person)
裏面的for循環,然後我停在最後一行
你會知道越來越壞訪問錯誤,爲什麼是這樣呢?
以上代碼中CFRelease可能的候選對象是什麼?爲什麼?