【问题标题】:Resolve potential memory leak of an object解决对象的潜在内存泄漏
【发布时间】:2012-02-18 04:55:07
【问题描述】:

在 xcode 中使用分析工具后,我在代码中发现了以下警告。 (第 58 行和第 61 行)

在这种情况下我该如何修复泄漏?

【问题讨论】:

  • 请不要使用代码截图;这只会让人难以阅读。至少花时间复制粘贴它。您可以通过评论指明收到通知的行。

标签: objective-c ios memory-leaks


【解决方案1】:

看起来 Xcode 对在哪里绘制高亮线感到困惑,clang 报告的实际错误在第 54 行和第 66 行。

当您使用完通讯录后,ABAddressBookCreate() 需要通过 CFRelease() 来平衡:

if (addressBook) CFRelease(addressBook)

您的 ABRecordCopyValue() 变量也需要在循环块的末尾释放:

if (fName) CFRelease(fName);
if (lName) CFRelease(lName);

返回 ...Ref 对象并包含“创建”或“复制”的 C 函数通常需要通过 CFRelease() 来平衡。如果函数包含“Get”,它通常是一个内部指针或已经在一个自动释放池中。

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多