iphone-解析iPhone应用内存泄露

问题描述

解析iPhone应用内存泄露

应用代码如下:
用来过滤和筛选

- (long)personRecord:(ABRecordRef)paramPerson{

    if(paramPerson == nil){

        NSLog(@"The given Person is Null");
    }

    ABMutableMultiValueRef emails = ABRecordCopyValue(paramPerson, kABPersonEmailProperty);
    if(emails == nil){

        return 0;
    }

    NSLog(@"%ld",ABMultiValueGetCount(emails));
    // return (ABMultiValueGetCount(emails));

    return (ABMultiValueGetCount(emails));
}

但是当解析的时候出现:

怎么解决这个Leak?

解决方案

你是从ABRecordRef中获得了一份复制的object.释放一下

修改为如下方法:

- (long)personRecord:(ABRecordRef)paramPerson
  {

    if(paramPerson == nil)
    {

        NSLog(@"The given Person is Null");
    }

    ABMutableMultiValueRef emails = ABRecordCopyValue(paramPerson, kABPersonEmailProperty);
    if(emails == nil)
    {

        return 0;
    }

    NSLog(@"%ld",ABMultiValueGetCount(emails));
    // return (ABMultiValueGetCount(emails));

    long count = ABMultiValueGetCount(emails);
     CFRelease(emails);
     return count;
}
时间: 2024-11-05 20:36:02

iphone-解析iPhone应用内存泄露的相关文章

“.NET研究”在iPhone应用中如何避免内存泄露

我们曾经对iPhone的内存管理做过比较深入的报道,如何有效控制iPhone内存管理的对象的所有权与引用计数和以及iPhone内存的自动释放与便捷方法.本文我们将介绍在iPhone应用中如何避免内存泄露.想了解"在iPhone应用中如何避免内存泄露"就必须先了解iPhone内存管理的所有权. 关于所有权 所有权是iPhone内存管理的核心思想,对象的所有者负责在使用完对象后进行释放.一个对象可以有多个所有者,当它没有所有者时将被设置为取消分配(deallocation). 创建对象时,

在iPhone应用中如何避免内存泄露

我们曾经对iPhone的内存管理做过比较深入的报道,如何有效控制iPhone内存管理的对象的所有权与引用计数和以及iPhone内存的自动释放与便捷方法.本文我们将介绍在iPhone应用中如何避免内存泄露.想了解"在iPhone应用中如何避免内存泄露"就必须先了解iPhone内存管理的所有权. 关于所有权 所有权是iPhone内存管理的核心思想,对象的所有者负责在使用完对象后进行释放.一个对象可以有多个所有者,当它没有所有者时将被设置为取消分配(deallocation). 创建对象时,

htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下

问题描述 htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下 使用最新版的htmlcxx0.85版,把内部的css解析部分抽出之后,检测出内存泄露

xml-Delphi的XML解析出现内存泄露的问题

问题描述 Delphi的XML解析出现内存泄露的问题 var ComInstrXML: IXMLDocument; mainNode, childHeadNode, childBodyNode, pNode: IXMLNode; begin ComInstrXML:= LoadXMLData(const_XmlDocument); mainNode:= ComInstrXML.DocumentElement; ...... Result:= ComInstrXML.XML.Text; end;

如何处理JavaScript内存泄露

几周前,我们开始写一个系列,深入探讨JavaScript和它的工作原理.我们认为了解JavaScript的构成以及它们如何协作,有助于编写出更好的代码和应用程序. 本系列第一篇重点介绍了引擎.运行时.调用栈.第二篇揭示了谷歌V8 JavaScript引擎的内部机制,并且提供了一些关于如何写出更好的JavaScript代码的建议. 本文作为第三篇,将会讨论另一个开发者容易忽视的重要主题 :内存管理.我们也会提供一些关于如何处理JavaScript内存泄露的技巧.在SessionStack,我们需要

JavaScript内存泄露的4种方式及如何避免

简介 内存泄露是每个开发者最终都要面对的问题,它是许多问题的根源:反应迟缓,崩溃,高延迟,以及其他应用问题. 什么是内存泄露? 本质上,内存泄露可以定义为:应用程序不再需要占用内存的时候,由于某些原因,内存没有被操作系统或可用内存池回收.编程语言管理内存的方式各不相 同.只有开发者最清楚哪些内存不需要了,操作系统可以回收.一些编程语言提供了语言特性,可以帮助开发者做此类事情.另一些则寄希望于开发者对内存是否需 要清晰明了. JavaScript 内存管理 JavaScript 是一种垃圾回收语言

Android 和 Java 内存泄露检测工具——LeakCanary

LeakCanary Android 和 Java 内存泄露检测. "A small leak will sink a great ship." - Benjamin Franklin 千里之堤, 毁于蚁穴. -- <韩非子·喻老> demo 一个非常简单的 LeakCanary demo: https://github.com/liaohuqiu/leakcanary-demo 开始使用 在 build.gradle 中加入引用,不同的编译使用不同的引用: depende

作用域、闭包、内存泄露

作用域 作用域指的是变量的有效访问范围.作用域对Javascript有重要意义,了解作用域的工作原理是在性能角度和功能角度理解Javascript的关键. 每一个JavaScript函数都被表示为对象,是一个函数实例.以下两种定义函数的方式是等价的. var sayName = function(){ alert('hello world!'); } var sayName = new Function('alert("hello world!")'); 函数对象正如其他对象那样,拥有

Android 性能优化之使用MAT分析内存泄露问题

转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/42396507),请尊重他人的辛勤劳动成果,谢谢! 我们平常在开发Android应用程序的时候,稍有不慎就有可能产生OOM,虽然JAVA有垃圾回收机,但也不能杜绝内存泄露,内存溢出等问题,随着科技的进步,移动设备的内存也越来越大了,但由于Android设备的参差不齐,可能运行在这台设备好好的,运行在那台设备就报OOM,这些适配问题也是比较蛋疼的,比如我们平常