【发布时间】:2013-01-16 03:55:56
【问题描述】:
众所周知,在免费桥接类型和诸如CFArrayRef 和NSArray 之类的objective-c 类型之间进行转换非常容易。昨天发现了一段代码,将CGImageRef(不是免工具桥接类型)转换为id,如下:
CALayer *imgLayer = [CALayer layer];
imgLayer.contents = (id)aImage.CGImage;
但是,它工作正常。但我不明白,因为根据苹果的文档,CGImageRef 不属于免费桥接类型。查看第二行代码,imgLayer 应该保留分配给属性内容的值。因为CGImageRef 被转换为id,所以我认为在属性内容的setter 方法中,它会像[xxx retain] 一样向该对象发送保留消息。但是aImage.CGImage 不是一个对象,所以我认为这个保留消息不会正确执行(无论如何它会)。所以我的问题是这种转换背后的实际操作是什么?
【问题讨论】:
标签: iphone ios objective-c