3

我目前在仪器的这条线上有泄漏,每次调用时我都会泄漏几百K-

NSData *dataRef = UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]);
ABPersonSetImageData(newRecord, (CFDataRef)dataRef, nil);

当我排除以上几行时,我很好。

在整个程序中,这里只提到了dataRef。我尝试 CFrelease-ing 将其作为测试,但这会由于引用已释放的对象而导致崩溃。

我尝试将它们全部连接成一行,

ABPersonSetImageData(newRecord,(CFDataRef) UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]), nil);

但我得到了相同的结果。

我预计第一次会发生泄漏,因为众所周知 Imagenamed 会缓存图像对象,并且据报道该调用会泄漏 iOS4 之前的版本,但我不希望会持续泄漏。

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

4

1 回答 1

1

我认为你不必担心那个对象。因为UIImagePNGRepresentation会返回一个autoreleased对象,所以不会有任何内存泄漏。既然dataRef是一个autoreleased对象,你不应该手动释放它。

于 2011-02-17T13:20:51.340 回答