- (void)tableView:(UITableView *)tableView
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = indexPath.row;
if (row == NSNotFound)
return;
if (call.uid != kABRecordInvalidID)
{
ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook,
call.uid);
// CFRelease(addressBook);// commenting out this makes the program not crash
}
}
Тук е проблемът, статичният анализ на кода ми казва, че имам изтичане на памет, защото не пускам адресната книга. Опитвам се да го освободя, но ако се върна на екрана, където беше пуснат, и извикам тази функция отново, приложението се срива.
Представете си, че щраквам върху бутона за аксесоар за uitableview
. Правя каквото трябва и се връщам към оригиналния прозорец, след което щраквам отново върху бутона за аксесоари на uitableview
и програмата се срива с тази грешка:
-[Not A Type retain]: съобщение, изпратено до освободен екземпляр 0x618d810