gpt4 book ai didi

ios - 使用 CFRelease 内存不会减少/释放 AB 中有 5000 个联系人

转载 作者:行者123 更新时间:2023-11-29 00:23:28 25 4
gpt4 key购买 nike

  • 我有 5154 个联系人。
  • 当我启动应用程序时,内存增长到 300MB
  • 在 Xcode 中,即使应用程序多次转到 bg 和 fg,它也会保留在那里
  • 不执行代码,内存保持在 70MB

为什么 CFRelease 没有释放所有内存?怎么了?或者这是预期的?

    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName);
CFIndex nPeople = CFArrayGetCount(allPeople);
for (int i = 0; i < nPeople; i++)
{
ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);
NSArray *expandedList = [self getExpandedContactsFromABRecordRef:person];
// do some work

}
if (allPeople != NULL) {
CFRelease(allPeople);
}
if (source != NULL) {
CFRelease(source);
}
if (addressBook != NULL) {
CFRelease(addressBook);
}


- (NSArray *)getExpandedContactsFromABRecordRef:(ABRecordRef)person
{
NSMutableArray *expandedContacts = [NSMutableArray new];
CFStringRef firstNameRef = ABRecordCopyValue(person, kABPersonFirstNameProperty);
CFStringRef lastNameRef = ABRecordCopyValue(person, kABPersonLastNameProperty);
NSString *firstName = (__bridge_transfer NSString*)firstNameRef;
NSString *lastName = (__bridge_transfer NSString*)lastNameRef;

ABMultiValueRef multiPhones = ABRecordCopyValue(person, kABPersonPhoneProperty);
for(CFIndex i=0;i<ABMultiValueGetCount(multiPhones);i++) {
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, i);
NSString *phoneNumber = (__bridge_transfer NSString *) phoneNumberRef;
}
if (multiPhones != NULL) {
CFRelease(multiPhones);
}
return expandedContacts;
}

最佳答案

我的错 - 这是错误的 - CoreFoundation 已经有一段时间了..不要发布它

(未删除,所以 op 看到了)

您不会释放通过 CFArrayGetValueAtIndex 获得的联系人 - 因此您泄露了很多联系人

关于ios - 使用 CFRelease 内存不会减少/释放 AB 中有 5000 个联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43715515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com