ABPersonSetImageData不显示图像
-
18-09-2019 - |
题
我用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
是完全正确的,在他的评论中,NSData
和CFData
也是免费电话桥接与可可触摸与可可的iPhone,让我原来的答复是错的。是我的错,应该以前曾修改它。
不隶属于 StackOverflow