为什么这个演员不需要ARC下的桥接?

时间:2012-05-01 20:36:03

标签: ios automatic-ref-counting

为什么将CGImageRef转换为对象指针不需要内存管理信息(__bridge等)?例如,如果 image 的类型为UIImage *,而 layer 是UIView的底层,则以下代码行不会引起编译器的任何抱怨:

layer.content = (id)[image CGImage];

1 个答案:

答案 0 :(得分:6)

引用Transitioning to ARC Release Notes

  

编译器处理从Cocoa方法返回的CF对象

     

编译器了解返回Core Foundation的Objective-C方法   类型遵循历史Cocoa命名约定(see Advanced Memory Management Programming Guide)。例如,编译器知道   在iOS中,由UIColor的CGColor方法返回的CGColor是   不拥有。如图所示,您仍必须使用适当的类型转换   通过这个例子......

(好吧,不太可可,但是嘿!)。

因为CGImage返回一个CoreFoundation对象,所以不需要__bridge强制转换。