我得到低内存的警告后,更新了约20个联系人的图像。我已经把代码放在。有人能说出可能的原因吗?
NSString *imagepath = [[IDLFactory documentsDirectoryPath] stringByAppendingFormat:@"/%@",value];
NSData *dataRef = [[NSData alloc] initWithContentsOfFile:imagepath];
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
[dataRef release];
dataRef = nil;
CFErrorRef error;
ABPersonRemoveImageData(inContact, &error); // <-- clean any image first from ref
BOOL ret = ABPersonSetImageData(inContact, cfdata, &error);
if (ret)
{
ret = ABAddressBookSave(inAddressBook, &error);
} else
{
NSLog(@"Could not write the image to the person");
}
CFRelease(cfdata);提前感谢
发布于 2010-11-23 20:43:54
首先,我认为ABPersonRemoveImageData()有时是不必要的,因为它会填充新数据。
其次,我猜内存被自动释放对象占用了。您需要通过NSAutoreleasePool.释放这些自动释放对象如果你在同一个run循环中运行所有的东西,通常iOS会在某个时候释放这些自动释放对象。
https://stackoverflow.com/questions/4254386
复制相似问题