gpt4 book ai didi

iphone - ABPersonSetImageData 不显示图像

转载 作者:行者123 更新时间:2023-12-03 20:38:30 27 4
gpt4 key购买 nike

我使用 ABUnknownPersonViewController 来显示联系人 View 。

我尝试设置图像:

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

它不起作用,我不知道为什么。有什么想法吗?

最佳答案

您不能仅将 NSData 对象转换为 CFDataRef;如 the docs 中所述,CFDataRef 是“对不可变 CFData 对象的引用”,它与 NSData 实例不同:

typedef const struct __CFData *CFDataRef;

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

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

另请注意,由于您自己创建了该对象,因此还必须按照 Core Foundation Ownership Policy 释放它。 ;您使用 CFRelease 函数释放 Core Foundation 对象的所有权:

CFRelease(dr);

这类似于Cocoa中的内存管理,一旦Core Foundation对象的保留计数达到零,它将被释放。

编辑: Stefan 在他的评论中完全正确,NSDataCFData 也是收费的 -与 Cocoa 一样,在 iPhone 上使用 Cocoa-Touch 进​​行免费桥接,所以我原来的答案是错误的。我的错,应该之前编辑过。

关于iphone - ABPersonSetImageData 不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1147698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com