Iphone 在IOS上向联系人添加图像时令人费解的内存泄漏

Iphone 在IOS上向联系人添加图像时令人费解的内存泄漏,iphone,objective-c,ios,contacts,abaddressbook,Iphone,Objective C,Ios,Contacts,Abaddressbook,我现在在仪器的这条线上有一个漏洞,每次调用它时,我都会漏掉几百K- NSData *dataRef = UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]); ABPersonSetImageData(newRecord, (CFDataRef)dataRef, nil); 当我翻出上面几行时,我很好 dataRef仅在整个程序中提及。我尝试将其作为测试发布,但由于引用了解除分配的对象,这会导致崩溃 我试着把它连接成一行 ABPe

我现在在仪器的这条线上有一个漏洞,每次调用它时,我都会漏掉几百K-

NSData *dataRef = UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]);
ABPersonSetImageData(newRecord, (CFDataRef)dataRef, nil);
当我翻出上面几行时,我很好

dataRef仅在整个程序中提及。我尝试将其作为测试发布,但由于引用了解除分配的对象,这会导致崩溃

我试着把它连接成一行

ABPersonSetImageData(newRecord,(CFDataRef) UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]), nil);
但我得到了同样的结果

我认为第一次会有一半的泄漏,因为众所周知Imagenamed会缓存图像对象,并且该调用在iOS4之前被报告为泄漏,但我不认为会继续泄漏


有什么想法吗?相关的问题之前已经在这里提出过几次,但似乎没有人有答案。

我想你不必担心这个问题。由于
UIImagePNGRepresentation
将返回一个
autoreleased
对象,因此不会出现任何内存泄漏。由于
dataRef
是一个
autoreleased
对象,您不应该手动释放它。

但是,每次使用该行时(在仪器中测量),我都会损失几百K。我在创建联系人时只创建了联系人图片,这稍微改善了情况(以前每次更新时我都会这样做),但我仍然想解决这个问题。这些泄漏是否出现在设备上?模拟器的结果通常会显示虚假的泄漏。你确定一旦你完成了,你就要发布newRecord吗?事实上,我似乎没有发布它(如果我发布了,我会在其他地方收到一个奇怪的错误)。我看到它会在这个视图控制器的整个生命周期中保留,但不会在退出时释放。自从我开始做这个项目已经有一段时间了,当我回到这个项目进行下一次更新时,我将进一步调查。谢谢