我用ABUnknownPersonViewController来显示联系人视图。

我尝试与设置图像:

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

它不工作,我不知道为什么。任何想法?

有帮助吗?

解决方案

你不能只是施放NSData对象到CFDataRef;如的文档,一个CFDataRef是一个“引用不可变CFData对象”,这是不一样的作为NSData实例

typedef const struct __CFData *CFDataRef;

要创建从CFDataRef实例NSData,则需要使用CFDataCreate方法,传递的字节数和长度:

NSData *dataRef = UIImagePNGRepresentation([UIImage imageNamed:@"contact3.png"]); 
CFDataRef dr = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);

还要注意的是,因为你自己创建的对象,还必须释放它,下面的核心基础所有权政策;您使用CFRelease函数释放核心基础对象的所有权:

CFRelease(dr);

这类似于可可存储器管理,并且一旦核心基础对象的保留计数达到零,将被释放。

编辑: Stefan是完全正确的,在他的评论中,NSDataCFData也是免费电话桥接与可可触摸与可可的iPhone,让我原来的答复是错的。是我的错,应该以前曾修改它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top