Iphone 为什么我在尝试发布时会得到“EXC\u BAD\u ACCESS”?
请看一下我的代码:Iphone 为什么我在尝试发布时会得到“EXC\u BAD\u ACCESS”?,iphone,objective-c,memory-management,Iphone,Objective C,Memory Management,请看一下我的代码: (void)loadContactsFromAddressBook { ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); CFIndex count = ABAddressBookGetPersonCount(addressBook); ABRecordRef person;
(void)loadContactsFromAddressBook {
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex count = ABAddressBookGetPersonCount(addressBook);
ABRecordRef person;
for (int i = 0; i < count; i++) {
person = CFArrayGetValueAtIndex(allPeople, i);
CFStringRef cfStr = ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString* firstName = (NSString*) cfStr;
[contacts addObject:firstName];
CFRelease(cfStr);
}
CFRelease(addressBook);
CFRelease(allPeople);
}
我试图在for块之后释放CFReleaseperson,但应用程序因“EXC\u BAD\u ACCESS”而崩溃。如果我删除了CFReleaseperson,应用程序就会工作。您没有创建此人,只是引用了它。在这里插入孩子支持笑话。通常只调用释放,如果你已经分配,init或拷贝daaAIK,我们也应该释放核心基础对象,我正在发布addressBook和allPeople,应用程序正在运行。这是因为方法名称中包含create或copy。我可以说任何Apple Core框架中的方法名称都告诉我们是否必须发布吗?例如,名为copy或create的方法意味着我们必须发布?