gpt4 book ai didi

objective-c - 使用 CFDictionaryRef 和 A​​BMutableMultiValueRef 的无法解释的泄漏

转载 作者:行者123 更新时间:2023-12-03 17:37:14 25 4
gpt4 key购买 nike

以下代码创建了许多我不明白的泄漏,因为我释放了使用 Create 或 Copy 创建的所有对象。我没有广泛使用 CF 对象,因此我可能对保留周期有误解。如有任何帮助,我们将不胜感激:

ABMutableMultiValueRef webServices = ABRecordCopyValue(aRecord, kABPersonInstantMessageProperty);

for (CFIndex i = 0; i < ABMultiValueGetCount(webServices); i++) {

CFDictionaryRef webService = CFDictionaryCreateCopy(NULL, ABMultiValueCopyValueAtIndex(webServices, i));

webServiceLabel = ABMultiValueCopyLabelAtIndex(webServices, i);

webServiceProvider = CFDictionaryGetValue(webService, kABPersonInstantMessageServiceKey);
webServiceUserName = CFDictionaryGetValue(webService, kABPersonInstantMessageUsernameKey);

// Data to be saved at this point
if (webService) CFRelease(webService);
if (webServiceLabel) CFRelease(webServiceLabel);
}

if (webServices) CFRelease(webServices);

最佳答案

这是你的问题:

CFDictionaryRef webService = CFDictionaryCreateCopy(NULL, ABMultiValueCopyValueAtIndex(webServices, i));

ABMultiValueCopyValueAtIndex 创建一个从未分配给变量的对象。它需要被释放,但从来没有被释放过。这是内存泄漏。

关于objective-c - 使用 CFDictionaryRef 和 A​​BMutableMultiValueRef 的无法解释的泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612829/

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