为什么将 CGImageRef 转换为对象指针不需要内存管理信息(__bridge 等)?例如,如果image是 UIImage * 类型,并且layer是 UIView 的底层,那么下面的代码行不会引起编译器的任何抱怨:
layer.content = (id)[image CGImage];
为什么将 CGImageRef 转换为对象指针不需要内存管理信息(__bridge 等)?例如,如果image是 UIImage * 类型,并且layer是 UIView 的底层,那么下面的代码行不会引起编译器的任何抱怨:
layer.content = (id)[image CGImage];
引用过渡到 ARC 发行说明:
编译器处理从 Cocoa 方法返回的 CF 对象
编译器理解返回 Core Foundation 类型的 Objective-C 方法遵循历史 Cocoa 命名约定(请参阅高级内存管理编程指南)。例如,编译器知道,在 iOS 中,由 UIColor 的 CGColor 方法返回的 CGColor 是不拥有的。您仍然必须使用适当的类型转换,如本示例所示...
(好吧,不是很可可,但是嘿!)。
因为 CGImage 返回一个 CoreFoundation 对象,所以不需要强制转换__bridge
。